Изменение одного объекта NSManaged изменяет другие объекты - PullRequest
0 голосов
/ 01 ноября 2019

У меня в магазине приложений есть приложение Hapistats. Он использует cloudkit. Я нахожусь в процессе преобразования всех данных из облачного набора в Coredata.

У меня есть объект с именем log , он имеет отношение один ко многим с активность .

Проблема в том, что я пытаюсь обновить действия журнала. Позволяет lay log1 - это журнал, в котором есть действие с именем activity1 . Когда я пытаюсь добавить активность 1 в уже существующий журнал, log2 , журнал 1 больше не будет иметь активность 1, а журнал 2 успешно сохранит активность 1. себе.

Это происходит при каждом обновлении или создании нового журнала. ,Проблема в том, что, очевидно, может быть только один журнал с определенной активностью.

// Edits the log
func editLog(log: Log, rating: Int, activitiesToAddToLog: [Activity]) {
    log.rating = Int16(rating)
    log.removeFromActivities(log.activities) // Empties the activities from the log
    let activitiesOrderedSet = NSOrderedSet(array: activitiesToAddToLog)
    log.addToActivities(activitiesOrderedSet) // Adds all the activites to the log
    saveToPersistentStore()
}

Это единственное место, которое вызывает editLog ()

@IBAction func saveActivitiesButtonTapped(_ sender: Any) {
    // log is an optional because I use a landing pad for log.
    if let log = log {
        LogController.shared.editLog(log: log, rating: rating, activities: displayActivities[0])true)
    }
}

Я ожидаю, что мой код простодобавлять действия в журналы при вызове editLog (), но вместо этого он переопределяет действия других журналов.

1 Ответ

0 голосов
/ 02 ноября 2019

Я понял это. Это была проблема Xcode. На самом деле это был не один ко многим, поэтому я добавил его и построил на обычном устройстве, и оно неожиданно сработало.

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