要在私有(private) CKRecordZone 中添加 CKRecord,您需要确保该区域已经存在。
但这是否意味着每次我需要插入记录时,我都需要获取所有区域并使用 fetchAllRecordZonesWithCompletionHandler
查找我的区域是否存在?效率不会很高。
最好的策略是什么?
我见过的大多数例子都展示了如何创建一个区域并在其中添加一条记录。但是您不会每次都创建该区域,并且您不能只是假设它存在......
如果尚未创建区域,以下代码将失败
let customZone = CKRecordZone(zoneName: self.zoneName!)
// Create a CKRecord
let lessonRecord = CKRecord(recordType: self.recordType, zoneID: customZone.zoneID)
谢谢你的帮助。
最佳答案
要查看是否存在特定区域,请使用 CKFetchRecordZonesOperation
并仅传递一个记录区域 ID。
如果您的代码设置正确,您只需执行一次。
创建一个代表记录区域的类。此类应为给定区域执行所有 CloudKit 操作。当您为特定区域初始化此类的实例时,您可以检查该区域是否存在。如果没有,则创建区域。然后,每次需要向该区域读取或写入数据时,都使用该区域帮助程序类的特定实例。
当然每次读写操作都需要检查错误结果来检查CKErrorZoneNotFound
错误。出现此类错误可能意味着该区域已从应用程序的另一个副本中删除。
关于cloudkit - 如何知道 CloudKit 区域是否已经存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37451722/