我打電話到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 –