I solved it. After creating the application group, I subclassed NSPersistentContainer and overrided the defaultDirectory () class method to return a directory of common application groups. Also override init (name: String, managedObjectModel model: NSManagedObjectModel). Then, in the coredata stack, you replace the persistentcontainer code with a template with a new instance of the created PersistentContainer class.
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) } }
Then, in CoreDataStack * code, wherever possible, either in Appdelegate or in its own file. Mine was in its own file called 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 }()
Hope this helps
cod_A source share