首先,必须确保应用程序的App Group设置正确。 这是可共享数据的标准方式。在Xcode的“Capability”选项卡中可以设置App Group。
接下来,在应用程序中,你需要确保它在你的扩展中使用的是相同的App Group标识符。 例如,其中一个可能是com.company.app,而另一个则可能是com.company.app.widget。
然后,在您的应用程序中使用的Core Data stack中,使用相同的标识符进行持久性存储设置。 你可以在你的persistentContainer的初始化中设置这个。
例如:
let container = NSPersistentContainer(name: "MyAppCoreDataModel")
let storeURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "com.company.app")!.appendingPathComponent("MyAppCoreData.sqlite")
let description = NSPersistentStoreDescription(url: storeURL)
container.persistentStoreDescriptions = [description]
例如:
let container = NSPersistentContainer(name: "MyAppCoreDataModel", managedObjectModel: model)
let storeURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "com.company.app")!.appendingPathComponent("MyAppCoreData.sqlite")
let description = NSPersistentStoreDescription(url: storeURL)
container.persistentStoreDescriptions = [description]
完成上述步骤后,你的应用程序将可以与小部件扩展共享相同的Core Data存储,并且你将能够在该扩展中使用相同的Context和Fetch请求。
上一篇:App组件中使用的useEffect在reactrouter中无法触发
下一篇:app[web.1]: 警告:connect.session() MemoryStore is not .Heroku is not working