【发布时间】:2015-10-26 00:41:24
【问题描述】:
我在我的应用中以两种不同的方式调用 iCloud 数据库:
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
标签: nsoperation nsoperationqueue cloudkit cloudkit-environments