Как удалить CKRecord

Как программно удалить 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++
}

person Garret Kaye    schedule 19.05.2015    source источник
comment
Вы смотрели документацию для CKRecord? нет delete функции. Вам следует прочитать руководство пользователя CloudKit. Он покрывает это.   -  person rmaddy    schedule 20.05.2015
comment
возможный дубликат Удаление данных из облачного набора с помощью swift   -  person Edwin Vermeer    schedule 20.05.2015


Ответы (2)


Это не то, как вы удаляете записи в 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)
person Simon    schedule 19.05.2015
comment
Спасибо большое! Есть ли способ удалить самую раннюю запись в базе данных? - person Garret Kaye; 20.05.2015
comment
Каждая запись хранит метаинформацию, включая время ее создания. Если вы хотите удалить самую раннюю, запросить или получить все записи, отсортируйте их по времени создания, а затем удалите самую раннюю. - person harryhorn; 20.05.2015

Вы можете использовать

удалить (withRecordID: completedHandler :)

документы Apple

версия objc:

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