Записи CloudKit не удаляются при удалении из приложения iOSIOS

Программируем под IOS
Ответить
Anonymous
 Записи CloudKit не удаляются при удалении из приложения iOS

Сообщение Anonymous »

По неизвестной причине, когда я удаляю запись в своем приложении, запись CloudKit не удаляется. Поэтому при следующем запуске приложения «удаленные» записи вернутся.
Я добавляю записи следующим образом:

Код: Выделить всё

func addReadingListBook (book: NYTBook, list: ReadingList) {
//set it
var bookToAdd = RLBook(nytBook: book)!
let parentReference = CKRecord.Reference(recordID: list.recordId!, action: .none)
bookToAdd.parentReference = parentReference //needed for query
bookToAdd.record.parent = parentReference //needed for sharing
myReadingListBooksDictionary[book.primaryIsbn13] = bookToAdd

Task {
do {
// Save the RLBook record first
let savedBookRecord = try await db.save(bookToAdd.record)

// Persist related buy links as child records in CloudKit (if any)
if let links = book.buyLinks, !links.isEmpty {
var buyLinkRecords: [CKRecord] = []
for link in links {
let buyLinkRecordID = CKRecord.ID(zoneID: savedBookRecord.recordID.zoneID)
let buyLinkRecord = CKRecord(recordType: "BuyLink", recordID: buyLinkRecordID)
buyLinkRecord["parentReference"] = CKRecord.Reference(recordID: savedBookRecord.recordID, action: .deleteSelf)
buyLinkRecord["bookIsbn13"] = book.primaryIsbn13
buyLinkRecord["name"] = link.name
buyLinkRecord["url"] = link.url
buyLinkRecords.append(buyLinkRecord)
}
if !buyLinkRecords.isEmpty {
_ = try await db.modifyRecords(saving: buyLinkRecords, deleting: [])
}
}
} catch {
Logger.errorLog.error("\(error.localizedDescription)")
}
}
}
Я удаляю запись следующим образом:

Код: Выделить всё

func removeReadingListBook (book: RLBook) {
myReadingListBooksDictionary.removeValue (forKey: book.primaryIsbn13)
Task {
do {
// Delete related BuyLink records for this book
let parentRef = CKRecord.Reference(recordID: book.record.recordID, action: .deleteSelf)
let linkPredicate = NSPredicate(format: "parentReference == %@", parentRef)
let linkQuery = CKQuery(recordType: "BuyLink", predicate: linkPredicate)
let linkResult = try await db.records(matching: linkQuery, inZoneWith: book.record.recordID.zoneID)
let linkRecordIDs: [CKRecord.ID] = linkResult.matchResults.compactMap { try? $0.1.get().recordID }
if !linkRecordIDs.isEmpty {
_ = try await db.modifyRecords(saving: [], deleting: linkRecordIDs)
}

// Now delete the book record itself
try await db.deleteRecord(withID: book.record.recordID)

} catch {
Logger.errorLog.error("\(error.localizedDescription)")
}
}
}
Я проверил разрешения ролей и все остальное, что смог придумать или найти в Интернете. Любая помощь будет оценена по достоинству.

Подробнее здесь: https://stackoverflow.com/questions/798 ... om-ios-app
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»