我打电话到iCloud的数据库在我的应用程序两种不同的方式:CloudKit操作执行的开发版本,但有时在量产版挂
1. 调用CKDatabase
方便的方法开发(模拟器)的作品完美,生产(设备)环境:
let privateDatabase = CKContainer.defaultContainer().privateCloudDatabase
privateDatabase.fetchRecordWithID(recordID, completionHandler: { (record, error) -> Void in
// handle record and errors
})
2. 添加CKOperations
到主队列完美的作品在开发环境,以及工作了一段时间,当我在生产环境中测试 - 但随后随意,几个小时后,间歇性测试,对数据库的这种调用只是开始挂起 - 不会产生错误,也不会执行完成代码。 (该fetchRecordWithID
通话仍然运转完好所有的时间。)
let op1 = CKModifyRecordsOperation(recordsToSave: records, recordIDsToDelete: nil)
op1.modifyRecordsCompletionBlock = { (savedRecords, deletedRecordIDs, error) -> Void in
// handle records and errors
}
op1.database = privateDatabase
// let op2, op3...
NSOperationQueue.mainQueue().addOperations([
op1,
op2,
op3,
], waitUntilFinished: false)
在CloudKit仪表盘的使用面板,没有什么甚至远程接近极限。我还没有考虑哪些其他变量 - 或者我可以运行哪些其他测试来弄清楚发生了什么问题?
尝试设置op1,op2和op3.qualityOfService = .UserInitiated –