具有应用组和多个目标的核心数据

时间:2018-08-11 17:56:50

标签: swift core-data ios-app-group

我知道跨目标访问核心数据时,我需要使用应用程序组和通用的persistentContainer配置。我能够毫无问题地阅读,也可以创建。

但是,当另一个目标创建并保存项目时,我遇到的困难是主应用程序的NSFetchedResultsController看不到更改。如果我重新启动该应用程序,则将显示数据,因此我知道它已正确存储。我还尝试在主要目标中捕获NSManagedObjectContextDidSave通知,但这似乎也没有。

NotificationCenter.default.addObserver(forName: Notification.Name.NSManagedObjectContextDidSave,
                                       object: nil,
                                       queue: nil) { notification in
                                        print("Got called")
                                        self.managedObjectContext.mergeChanges(fromContextDidSave: notification)

如何让主要目标中的NSFetchedResultsController知道已从另一个目标中保存了某些内容?

我正在像这样设置persistentContainer:

lazy private var persistentContainer: NSPersistentContainer = {
  let groupName = "group.com.contoso.CoolCalendar"
  let url = FileManager.default
    .containerURL(forSecurityApplicationGroupIdentifier: groupName)!
    .appendingPathComponent("CoolCalendar.sqlite")

  let container = NSPersistentContainer(name: "CoolCalendar")

  container.persistentStoreDescriptions = [
    NSPersistentStoreDescription(url: url)
  ]

  container.loadPersistentStores(completionHandler: { _, error in
    if let error = error as NSError? {
      fatalError("Unresolved error \(error), \(error.userInfo)")
    }
  })

  return container
}()

0 个答案:

没有答案