【问题标题】:How to delete a CKRecord如何删除 CKRecord
【发布时间】:2015-05-19 21:36:44
【问题描述】:

如何在客户端以编程方式从我的数据库中删除CKRecord

for record in records {
    if recordNumber < 13 {
        let moodRecord:CKRecord = record as! CKRecord
        self.moodArray.append(moodRecord.objectForKey("Color") as! String)
    }
    else if recordNumber > 13 {
        // DELETE RECORD HERE
        record.delete(CKRecord)
        recordNumber--
    }
    recordNumber++
}

【问题讨论】:

标签: ios swift cloudkit ckrecord


【解决方案1】:

这不是您删除CloudKit 中记录的方式。以下是我删除应用中记录的方法:

let operation = CKModifyRecordsOperation(recordsToSave: nil, recordIDsToDelete: [record.recordID])
operation.savePolicy = .AllKeys
operation.modifyRecordsCompletionBlock = { added, deleted, error in
    if error != nil {
        println(error) // print error if any
    } else {
        // no errors, all set!
    }
}
CKContainer.defaultContainer().publicCloudDatabase.addOperation(operation)

【讨论】:

  • 谢谢您的分配!有没有办法删除数据库中最早的记录?
  • 每条记录都保存着元信息,包括它的创建时间。如果要删除最早的,查询或获取所有记录,按创建时间排序,然后删除最早的。
【解决方案2】:

你可以使用

删除(withRecordID:completionHandler:)

apple docs

objc 版本:

[aDatabase deleteRecordWithID:rec.recordID completionHandler:^(CKRecordID * _Nullable recordID, NSError * _Nullable error) {
    ;
 }];

【讨论】:

    【解决方案3】:
    let database = CKContainer.default().publicCloudDatabase // or privateCloudDatabase
    
    let recordID = someRecord.recordID
        
    database.delete(withRecordID: recordID) { (ckRecordID, error) in
    
        if let error = error {
            print(error.localizedDescription)
            return
        }
                
        guard let id = ckRecordID else {
            return
        }
    
        print(id)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-21
      • 1970-01-01
      相关资源
      最近更新 更多