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

Duz*_*mac 3 zone cloudkit

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

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

采用的最佳策略是什么?

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

如果尚未创建区域,则以下代码将失败

let customZone = CKRecordZone(zoneName: self.zoneName!)
// Create a CKRecord
let lessonRecord = CKRecord(recordType: self.recordType, zoneID: customZone.zoneID)
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

rma*_*ddy 6

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

如果代码设置正确,您只需要执行一次此操作.

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

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