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