核心数据:使用本地和iCloud

时间:2020-10-06 17:35:32

标签: swift core-data icloud

我试图在我的应用程序核心数据中使用永久性存储。在此应用中,它应该具有本地的一些核心数据实体,但也可以通过iCloud进行同步。

在xcdatamodeld中,我创建了两个分别属于脱机(本地)和在线(iCloud)类型的配置,但是却收到一个奇怪的错误,提示它不能使用相同的容器名称。我不知道是否要为每个要在iCloud上同步的实体需要一个不同的容器。

我也不理解,因为如果我仅使用iCloud同步而不使用任何配置,那么我可以存储不同的实体。

此外,如果每个实体与容器具有1:1的关系,为什么无法删除它,那是没有意义的。

这是我正在使用的代码:

    persistentContainer = NSPersistentCloudKitContainer(name: name, managedObjectModel: model)
        
        var defaultDirectoryURL: URL
        var descriptors = [NSPersistentStoreDescription]()
        
        for capability in self.dbCapabilities {
            if capability.cloudEnable {
                defaultDirectoryURL = NSPersistentCloudKitContainer.defaultDirectoryURL()
            } else {
                defaultDirectoryURL = NSPersistentContainer.defaultDirectoryURL()
            }
            
            let url = defaultDirectoryURL.appendingPathComponent(capability.url)

            let descriptor = NSPersistentStoreDescription(url: url)
            descriptor.configuration = capability.configName
            
            if capability.cloudEnable {
                descriptor.cloudKitContainerOptions = NSPersistentCloudKitContainerOptions(containerIdentifier: "iCloud.\(capability.url)")
            }
            
            descriptors.append(descriptor)
        }
        
        persistentContainer.persistentStoreDescriptions = descriptors

0 个答案:

没有答案
相关问题