我解决了创建应用程序组后,我创建了NSPersistentContainer的子类,并覆盖类方法defaultDirectory()以返回共享应用程序组目录.还要覆盖init(name:String,managedObjectModel model:NSManagedObjectModel).然后在coredata堆栈中,使用创建的PersistentContainer类的新实例替换样板persistent 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)
- }
- }
然后在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
- }()
希望这会有所帮助