项目未从共享扩展记录到 CoreData
Item is not recorded to CoreData from Share Extension
我确实创建了 共享扩展。使用此扩展,我正在尝试将新项目插入 CoreData。代码如下。创建变量 context 和 document。 context.save() 没有失败。使用 main/host 应用程序插入 CoreData 工作正常并呈现给 UI.
我注意到的另一件事是,Share Extension 中的所有插入都存储在其他地方,但不在主应用程序中。看起来这些项目没有合并到主要的 CoreData 中。
为什么我的项目插入到 CoreData throw Share Extension 没有合并到主 CoreData?
let context = CoreDataStackManager.sharedManager.persistentContainer.viewContext
let document = SGDocument(context: context)
document.name = "Document Name"
do {
try context.save()
} catch {
fatalError("Unresolved error \(error)")
}
PS: Here 是类似的问题,但没有答案。
我找到了解决方案。
// In the extension I am setting that VC needs to be updated/refreshed.
UserDefaults.group.set(true, forKey: .udRefreshDocumentsVC)
// In the view controller adding listener for application will enter foreground.
NotificationCenter.default.addObserver(forName: .UIApplicationWillEnterForeground, object: nil, queue: nil, using: applicationWillEnterForeground)
// In the applicationWillEnterForeground method do reload.
func applicationWillEnterForeground(notification: Notification) {
if UserDefaults.group.bool(forKey: .udRefreshDocumentsVC) {
_fetchedResultsController = nil
tableView.reloadData()
UserDefaults.group.set(false, forKey: .udRefreshDocumentsVC)
}
}
我确实创建了 共享扩展。使用此扩展,我正在尝试将新项目插入 CoreData。代码如下。创建变量 context 和 document。 context.save() 没有失败。使用 main/host 应用程序插入 CoreData 工作正常并呈现给 UI.
我注意到的另一件事是,Share Extension 中的所有插入都存储在其他地方,但不在主应用程序中。看起来这些项目没有合并到主要的 CoreData 中。
为什么我的项目插入到 CoreData throw Share Extension 没有合并到主 CoreData?
let context = CoreDataStackManager.sharedManager.persistentContainer.viewContext
let document = SGDocument(context: context)
document.name = "Document Name"
do {
try context.save()
} catch {
fatalError("Unresolved error \(error)")
}
PS: Here 是类似的问题,但没有答案。
我找到了解决方案。
// In the extension I am setting that VC needs to be updated/refreshed.
UserDefaults.group.set(true, forKey: .udRefreshDocumentsVC)
// In the view controller adding listener for application will enter foreground.
NotificationCenter.default.addObserver(forName: .UIApplicationWillEnterForeground, object: nil, queue: nil, using: applicationWillEnterForeground)
// In the applicationWillEnterForeground method do reload.
func applicationWillEnterForeground(notification: Notification) {
if UserDefaults.group.bool(forKey: .udRefreshDocumentsVC) {
_fetchedResultsController = nil
tableView.reloadData()
UserDefaults.group.set(false, forKey: .udRefreshDocumentsVC)
}
}