有沒有辦法取消正在進行的 CloudKit 保存或上傳操作?
這不是一種time-out情況。我注意到視頻需要一些時間才能上傳,用戶可能會決定關閉 vc。如果他們這樣做,我想取消當前的上傳。
let database = CKContainer.default().publicCloudDatabase
var operation: CKModifyRecordsOperation?
func save(videoURL: URL) {
let record = CKRecord(recordType: "MyType")
let fileURL = URL(fileURLWithPath: videoURL.path)
let asset = CKAsset(fileURL: fileURL)
record["videoAsset"] = asset
database.save(record) { (record, err) in
}
// or
operation = CKModifyRecordsOperation(recordsToSave: [record], recordIDsToDelete: nil)
operation?.savePolicy = .allKeys
operation?.modifyRecordsCompletionBlock = { (savedRecordIDs, deletedRecordsIDs, error) in
}
database.add(operation!)
}
uj5u.com熱心網友回復:
既然你有參考CKModifyRecordsOperation,就可以呼叫cancel。
operation?.cancel()
如果您查找檔案CKModifyRecordsOperation,它會顯示以下內容。
如果將完成處理程式分配給操作的 completionBlock 屬性,CloudKit 會在操作執行后呼叫它并回傳結果。使用完成處理程式執行操作的任何內務處理任務,但不要使用它來處理操作的結果。您提供的完成處理程式應管理操作的任何失敗,無論是由于錯誤還是顯式取消。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/409029.html
標籤:
