繁体   English   中英

CloudKit - 如何取消正在进行的保存/上传操作

[英]CloudKit -How to Cancel a Save/Upload Operation that's in Progress

有没有办法取消正在进行的 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!)
}

由于您有对CKModifyRecordsOperation的引用,因此您可以调用cancel

operation?.cancel()

如果您查找CKModifyRecordsOperation的文档,它会显示以下内容。

如果将完成处理程序分配给操作的 completionBlock 属性,CloudKit 会在操作执行后调用它并返回结果。 使用完成处理程序来执行操作的任何内务处理任务,但不要使用它来处理操作的结果。 您提供的完成处理程序应管理操作的任何失败,无论是由于错误还是显式取消。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM