0

如果您需要与应用扩展共享核心数据,将容器存储在共享组中会很有用。

4

1 回答 1

0

您必须获取容器的描述,然后设置 URL:

let momdName = "MyModel"

guard let modelURL = Bundle(for: type(of: self)).url(forResource: momdName, withExtension:"momd") else {
    fatalError("Error loading model from bundle")
}

guard let mom = NSManagedObjectModel(contentsOf: modelURL) else {
    fatalError("Error initializing mom from: \(modelURL)")
}

guard let containerURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.com.my-group")?.appendingPathComponent("My.sqlite") else {
    fatalError("Cannot get shared group URL")
}

let container = NSPersistentCloudKitContainer(name: momdName, managedObjectModel: mom)

guard let description = container.persistentStoreDescriptions.first else {
    fatalError("###\(#function): Failed to retrieve a persistent store description.")
}

description.url = containerURL

container.loadPersistentStores() { (storeDescription, error) in
    if let error = error as NSError? {
        // ...
    }
}
于 2020-04-08T07:00:56.860 回答