代码之家  ›  专栏  ›  技术社区  ›  Lance Samaria

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

  •  0
  • Lance Samaria  · 技术社区  · 3 年前

    是否有办法取消正在进行的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!)
    }
    
    1 回复  |  直到 3 年前
        1
  •  0
  •   La Banana    3 年前

    既然你提到了 CKModifyRecordsOperation ,你可以打电话 cancel .

    operation?.cancel()
    

    如果你查一下医生 CKModifyRecordsOperation ,它是这样说的。

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