Попытка удалить одну запись из основного объекта, связанного с данными, но весь главный объект удаляется - PullRequest
0 голосов
/ 05 июля 2019

У меня есть объект базовых данных для приложения спортивного скоринга. Основная запись называется D_MatchData, а связанная сущность (один-ко-многим) называется D_MatchEvents. Идея в том, что для одного матча можно записать много разных событий. Это все хорошо работает при добавлении и извлечении данных, но я хочу иметь возможность удалить одну запись в D_MatchEvents (предположим, что пользователь записал неправильное событие и хочет «отменить»). Пока мой код выглядит так:

    // MARK: - Delete a single match event
class func deleteMatchEvent(_ matchUUID: String) -> Bool {
    let fetchRequest = NSFetchRequest<D_MatchEvents>(entityName: "D_MatchEvents")
    fetchRequest.predicate = NSPredicate(format: "r_ToData.d_matchUUID == %@", matchUUID)
    fetchRequest.returnsObjectsAsFaults = false
    do {
        var events = try gContext.fetch(fetchRequest)
        events.sort { return $0.d_EventSequence < $1.d_EventSequence }
        gContext.delete(events[0])
        try gContext.save()
        for event in events {
            print(event.d_EventSequence, event.d_EventTimestamp)
        }

    } catch {
        print(error)
        return false
    }

    return true
}

Я думал о том, чтобы прийти к этому от связанной сущности, используя обратное отношение, чтобы получить только те события для данного совпадения. Позже я уточню предикат, чтобы получать только те события, которые меня интересуют. Выборка работает нормально (в массив событий), как и сортировка в массиве, но когда я пытаюсь удалить одну строку из этого массива (в этот случай [0], но это может быть любой из них) Я обнаружил, что удаление удаляет все совпадения из базовой базы данных SQLlite - основной записи и всех записей событий. (gContext является глобальным, который определяет мой MOC)

Я должен что-то здесь упустить. Боюсь, что капризы Core Data все еще приводят меня в замешательство. Как я могу удалить только одну строку из моей связанной сущности, не удаляя весь мастер и все связанные записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...