是否可以使用
Swift在一个CloudKit操作中保存多个CKRecord对象?我知道如何使用像CKFetchRecordsOperation这样的东西,甚至只是常规的performQuery,一次检索多个记录.我刚刚意识到我不确定在一次操作中保存多个新记录的方法.到目前为止,我一直这样做的方式对我来说似乎效率低下.例如:
let recordsToSave:[CKRecord]! for newRecord in recordsToSave { if let database = self.publicDatabase { database.saveRecord(newRecord,completionHandler: { (record:CKRecord?,error:NSError?) in // Check if there was an error if error != nil { // There was an error,handle it properly. } else { // There wasn't an error if let savedRecord = record { // Handle saved record accordingly. } } }) }
虽然这确实很好用,但在我看来它似乎效率极低.我认为让一个特定的函数调用以保存整个CKRecords数组更有意义,而不是每次通过循环都要进行数据库调用.基本上这就是我希望我能做到的:
let recordsToSave:[CKRecord]! if let database = self.publicDatabase { // SOMETHING HERE LIKE database.saveRECORDS (plural) ???? database.saveRecords(recordsToSave,completionHandler: { (records:[CKRecord]?,error:NSError?) in // Check if there was an error if error != nil { // There was an error,handle it properly. } else { // There wasn't an error if let savedRecords = records { } } }) }
尽我所知,并根据我获得的信息.没有像database.saveRecords(复数)这样的实际函数.除非我错过了什么?我认为它不是那么切割和干燥,命名是不同的,但我认为必须有类似的东西.
每次进行循环时都必须进行数据库调用,这似乎非常低效.
有没有人知道使用CloudKit一次为多个CKRecords执行保存的方法?任何帮助都将非常感激.先感谢您!
解决方法
在循环中使用saveRecord是非常低效的.实际上最好避免使用CKDatabase上的所有便捷方法并使用适当的操作.
要添加/修改/删除一个或多个记录,请使用CKModifyRecordsOperation.您可以通过单个操作添加/修改以及删除任意数量的记录.这比使用saveRecord更有效.
我建议您浏览CloudKit Framework Reference以查看完整的可用操作列表.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。