У меня в магазине приложений есть приложение 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 (), но вместо этого он переопределяет действия других журналов.