Swift 在 App 和 Today Extension 之间共享 CoreData [重复]

Posted

技术标签:

【中文标题】Swift 在 App 和 Today Extension 之间共享 CoreData [重复]【英文标题】:Swift Share CoreData between App and Today Extension [duplicate] 【发布时间】:2017-02-14 07:43:10 【问题描述】:

我想从我的 Today Extension Widget 访问我的 CoreData 以显示一些数据。我已经读到我必须创建一个应用程序组并将其添加到我的应用程序和我的小部件中。我已经这样做了,但现在我不确定下一步该做什么。我找到了一个旧教程,但那里使用的方法不可用,或者我无法在 AppDelegate 中找到它们。有人可以帮帮我吗?

【问题讨论】:

【参考方案1】:

您需要通过FileManagercontainerURL(forSecurityApplicationGroupIdentifier: 获取组容器的URL,并在两个目标中传递容器标识符:

lazy var secureAppGroupPersistentStoreURL : URL = 
   let fileManager = FileManager.default
   let groupDirectory = fileManager.containerURL(forSecurityApplicationGroupIdentifier: "group.com.mydomain.myapp")!
   return groupDirectory.appendingPathComponent("databaseName.sqlite")
()

【讨论】:

您需要在应用程序和今天的扩展项目中添加适当的功能:应用程序组 谢谢,但正如我所说,我无法理解教程或原始帖子。我将您的代码复制到了我的扩展程序中,但我不知道如何进一步访问我的 CoreData。 实际上,如果您在persistentStoreCoordinator 的声明中传递secureAppGroupPersistentStoreURL 作为商店URL,您应该能够从应用程序和扩展程序访问数据。这是与普通 Core Data 实现的唯一区别。 你有什么例子吗? 很遗憾,没有,我猜 Ray Wenderlich 的网站上有一个教程。当然,您需要在开发者会员中心创建应用组,并在两个目标中添加通过应用组标识符的应用组功能。

以上是关于Swift 在 App 和 Today Extension 之间共享 CoreData [重复]的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Today Extension 上使用 AFNetworking

无法在 Today Extension 上使用 AFNetworking

如何将数据从应用程序显示到Today Extension Swift

Swift iOS 11 Beta Today 小部件 infoPlist.Strings 未本地化

App Today Extension开发注意事项

iOS扩展Extension之Today