国内使用cloudflare有效果吗(4在使用CloudKit后)

默认情况下,不允许使用constraint,取消后,需要代码处理,不然会出现数据重复;经过一番折腾,找到了个简单办法,本地Entity可以继续使用constraint, 与大家分享。

第一步:新建Model Configuration

选中Model文件, 通过Editor -> Add Configuration菜单,新建Local和Cloud两个Configuration,把需要同步的Entity拖入Cloud,本地使用的Entity拖到Local;

国内使用cloudflare有效果吗(4在使用CloudKit后)(1)

image.png

对Cloud Configuration,选中Used with CloudKit选荐

国内使用cloudflare有效果吗(4在使用CloudKit后)(2)

image.png

第二步:修改Persistence中的container配置

var container: NSPersistentCloudKitContainer = { let container = NSPersistentCloudKitContainer(name: "AAStock") // 1. 注意:与实际保持一致 let storeDirectory = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first! // 2. 获取文件位置 // Create a store description for a local store let localStoreLocation = storeDirectory.appendingPathComponent("local.sqlite") // 3. 为Local配置添加Store let localStoreDescription = NSPersistentStoreDescription(url: localStoreLocation) localStoreDescription.configuration = "Local" // Create a store description for a CloudKit-backed local store let cloudStoreLocation = storeDirectory.appendingPathComponent("cloud.sqlite") // 4. 为Cloud配置添加Store let cloudStoreDescription = NSPersistentStoreDescription(url: cloudStoreLocation) cloudStoreDescription.configuration = "Cloud" // Set the container options on the cloud store cloudStoreDescription.cloudKitContainerOptions = NSPersistentCloudKitContainerOptions( containerIdentifier: "iCloud.com.tang.AAStock") // 5. 注意保持CloudKit container一致 // Update the containers list of store descriptions container.persistentStoreDescriptions = [ cloudStoreDescription, localStoreDescription ] // Load both stores container.loadPersistentStores { storeDescription, error in guard error == nil else { fatalError("Could not load persistent stores. (error!)") } } return container }()

通过上述两步配置,可以愉快地使用constraint了,试试吧。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。