您可以为您的 Widget 和 App添加AppGroup功能(这里是一个很好的解释如何添加它)。
用户默认值
代替
UserDefaults.standard
只需UserDefaults
为您的 AppGroup 使用 shared :
UserDefaults(suiteName: <your_app_group>)
然后你可以像这个答案中解释的那样读/写数据。
文件容器
使用 AppGroup 权利,您可以访问共享文件容器:
let containerURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: <your_app_group>)!
并访问这样的网址:
let someFileURL = containerURL.appendingPathComponent("SomeFile.txt")
然后你可以使用你的共享文件容器,就像这个答案中解释的那样:
核心数据
你也可以创建一个共享的 CoreData 容器:
let storeURL = containerURL.appendingPathComponent("DataModel.sqlite")
let description = NSPersistentStoreDescription(url: storeURL)
let container = NSPersistentContainer(name: "DataModel")
container.persistentStoreDescriptions = [description]
container.loadPersistentStores { ... }
然后你可以使用你的共享 CoreData 容器,就像这个答案中解释的那样:
这是一个GitHub 存储库,其中包含不同的 Widget 示例,包括 App Group Widget。