Как загрузить новый файл Core Data в общий контейнер? - PullRequest
0 голосов
/ 10 февраля 2020

Я работал с NSPersistentCloudKitContainer, используя пример кода Apple, и настройка очень проста:

lazy var persistentContainer: NSPersistentCloudKitContainer = {

        let container = NSPersistentCloudKitContainer(name: "Name")
        container.loadPersistentStores(completionHandler: { (storeDescription, error) in
            if let error = error as NSError? {

                fatalError("Unresolved error \(error), \(error.userInfo)")
            }
        })
        return container
    }()

Но теперь мне нужно изменить, чтобы использовать базу данных, которая находится в общем контейнере так что его можно использовать с расширением.

Я пытался изменить его на этот код

    lazy var persistentContainer: NSPersistentCloudKitContainer = {
            let container = NSPersistentCloudKitContainer(name: "Name")

            // Create a store description for a CloudKit-backed local store
            let storeURL = URL.storeURL(for: "group.com.Name", databaseName: "Name")
            let cloudStoreDescription =
                NSPersistentStoreDescription(url: storeURL)
            cloudStoreDescription.configuration = "Default"

            // Set the container options on the cloud store
            cloudStoreDescription.cloudKitContainerOptions =
                NSPersistentCloudKitContainerOptions(
                    containerIdentifier: "iCloud.com.Name")

            // Update the container's list of store descriptions
            container.persistentStoreDescriptions = [cloudStoreDescription]

            // Load both stores
            container.loadPersistentStores { storeDescription, error in
                guard error == nil else {
                    fatalError("Could not load persistent stores. \(error!)")
                }
            }

            return container
        }()

public extension URL {

    /// Returns a URL for the given app group and database pointing to the sqlite database.
    static func storeURL(for appGroup: String, databaseName: String) -> URL {
        guard let fileContainer = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: appGroup) else {
            fatalError("Shared file container could not be created.")
        }

        return fileContainer.appendingPathComponent("\(databaseName).sqlite")
    }
}

, но я получил эту ошибку

Fatal error: Could not load persistent stores. Error Domain=NSCocoaErrorDomain Code=134060 "A Core Data error occurred." UserInfo={NSLocalizedFailureReason=Unable to find a configuration named 'Default' in the specified managed object model.}: 
...