Sha*_*sah 7 today-extension swift3 ios10
我试图从我的主应用程序的coredata数据库中获取实体,并在我的应用程序小部件Extention中显示它们.但是,fetch始终从我的数据库返回空结果.可以帮助我.Swift 3,ios 10.
我解决了 创建应用程序组后,我创建了NSPersistentContainer的子类,并覆盖类方法defaultDirectory()以返回共享应用程序组目录.还要覆盖init(name:String,managedObjectModel model:NSManagedObjectModel).然后在coredata堆栈中,使用创建的PersistentContainer类的新实例替换样板persistentcontainer代码.
import UIKit
import CoreData
class PersistentContainer: NSPersistentContainer{
override class func defaultDirectoryURL() -> URL{
return FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.bundleId.SomeApp")!
}
override init(name: String, managedObjectModel model: NSManagedObjectModel) {
super.init(name: name, managedObjectModel: model)
}
}
Run Code Online (Sandbox Code Playgroud)
然后在CoreDataStack Code*中的任何地方,可以在Appdelegate或其自己的文件中.我的文件名为CoredataStack
static var persistentContainer:PersistentContainer = {
let container = PersistentContainer(name: "SomeApp", managedObjectModel: CoreDataStack.managedObjectModel)
container.loadPersistentStores(completionHandler: { (storeDescription:NSPersistentStoreDescription, error:Error?) in
if let error = error as NSError?{
fatalError("UnResolved error \(error), \(error.userInfo)")
}
})
return container
}()
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助
Sha*_*ati -1
如今,扩展程序在与其包含的应用程序不同的进程中运行,因此不共享沙箱、用户默认值或表格数据库。这就是为什么当尝试从小部件获取容器中保存的数据时,您会得到一个空集。如果您希望包含的应用程序和小部件共享数据,您应该通过 iOS 开发人员门户向您的应用程序添加“应用程序组”功能,并为其提供共享组标识符字符串。接下来,当您实例化数据库(或 UserDefaults)的 FileManager 对象时,必须使用 initWithSuiteName 方法,传入共享组的标识符。
| 归档时间: |
|
| 查看次数: |
1047 次 |
| 最近记录: |