如何知道CloudKit区域是否已存在

时间:2016-05-26 04:38:10

标签: cloudkit zone

要在私人CKRecordZone中添加CKRecord,您需要确保该区域已存在。

但这是否意味着每次我需要插入记录时,我需要获取所有区域并使用fetchAllRecordZonesWithCompletionHandler查找我的区域是否存在?效率不高。

采用的最佳策略是什么?

我见过的大多数示例都展示了如何创建区域并在其中添加记录。但是你不是每次都要创建这个区域,你不能只假设它存在......

如果尚未创建区域

,则以下代码将失败
let customZone = CKRecordZone(zoneName: self.zoneName!)
// Create a CKRecord
let lessonRecord = CKRecord(recordType: self.recordType, zoneID: customZone.zoneID)

感谢您的帮助。

1 个答案:

答案 0 :(得分:6)

要查看是否存在特定区域,请使用CKFetchRecordZonesOperation并仅传递一个记录区域ID。

如果您的代码设置正确,则只需执行一次。

创建一个代表记录区的类。此类应执行给定区域的所有CloudKit操作。为特定区域初始化此类的实例时,可以检查该区域是否存在。如果没有,则创建区域。然后,每次需要读取或写入该区域的数据时,都要使用该区域助手类的特定实例。

当然,每次读写操作都需要检查错误结果以检查CKErrorZoneNotFound错误。获得此类错误可能意味着该区域已从应用程序的另一个副本中删除。