网上现在大部分的教程(包括苹果官方的CloudKit Quick Start)讲述的都是一种简易的方法(convience methods),我这里将要讲述的是如何有效使用队列进行数据库操作,使得操作更加有效规范可控。
队列的控制
如果你想要使用自己定义的NSOperationQueue的话,只需要在CKOperation指定上数据库就可以了
let container = CKContainer(identifier: "iCloud.me.masterchan.test0006") let database = container.publicCloudDatabase //获取数据 let fetchOperation = CKFetchRecordsOperation(recordIDs: [CKRecordID(recordName: "High School Fleet")]) fetchOperation.database = database //...... let queue = NSOperationQueue() queue.addOperation(fetchOperation)
另外,在一般情况下,其实可以直接使用database这个队列
let container = CKContainer(identifier: "iCloud.me.masterchan.test0006") let database = container.publicCloudDatabase //...... database.addOperation(fetchOperation)
当然,还能够添加依赖,确保操作按顺序执行
fetchUserRecordOperation.addDependency(fetchOperation)//可以通过添加依赖来决定执行顺序
操作的类型
- CKFetchRecordChangesOperation
- 检查Private Database中Zone的变化
- CKFetchRecordZonesOperation
- CKFetchRecordsOperation
- 取得记录,private 或 public
- CKFetchSubscriptionsOperation
- 取得订阅
- CKFetchWebAuthTokenOperation
- 获取网页认证的Token
- CKModifyRecordZonesOperation
- CKModifyRecordsOperation
- CKModifySubscriptionsOperation
- CKQueryOperation