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