如何删除 CKRecord
Posted
技术标签:
【中文标题】如何删除 CKRecord【英文标题】:How to delete a 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++
【问题讨论】:
您查看过CKRecord
的文档吗?没有delete
功能。您应该阅读 CloudKit 用户指南。它涵盖了这一点。
Deleting data from cloudkit with swift的可能重复
【参考方案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)
【讨论】:
以上是关于如何删除 CKRecord的主要内容,如果未能解决你的问题,请参考以下文章
如果由于网络连接不良而尚未完成创建,如何删除CKRecord?
将已删除的 CKRecord 与 CoreData NSManagedObject 协调一致