我在应用商店上有一个名为Hapistats的应用。它使用cloudkit。我正在将所有数据从cloudkit转换为Coredata。
我有一个名为 log 的实体,它与活动有一对多的关系。
问题是当我尝试更新日志的活动时。让我们放置 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()时将活动添加到日志中,但是它将覆盖其他日志的活动。
答案 0 :(得分:0)
我知道了。这是一个Xcode问题。实际上,它并不是一对一的,所以我重新添加了它,并在通用设备上构建,然后突然起作用。