【发布时间】:2017-09-25 17:05:25
【问题描述】:
我有两个实体:
议程活动
议程日期
AgendaEvent 与 AgendaDate 有一对多的关系(关系名称 是议程日期)。
议程日期只有一个属性(日期类型的议程日期)。
我正在尝试将数组的所有值保存到 Agendadate 中。
这种节省可能以两种不同的方式发生。
- 用户正在创建一个新的 AgendaDate(所以是一个新的上下文)
- 用户正在更新现有的 AgendaDate
这是我的代码:
var agendaDateToEdit: AgendaDate // this value is passed through a segue if the user clicked to modify an existing one.
var dateToAdd: AgendaDate!
if agendaDateToEdit == nil {
dateToAdd = AgendaDate(context: context)
} else {
dateToAdd = agendaDateToEdit
}
现在我执行 for 循环以从数组中插入项目:
let agendaEvent: AgendaEvent!
if agendaEventToEdit != nil {
agendaEvent = agendaEventToEdit
} else {
agendaEvent = AgendaEvent(context:context)
}
for date in dates {
dateToAdd.agendaDates = date
agendaEvent.addToAgendaDates(dateToAdd)
ad.saveContext()
}
但是以这种方式我只存储数组的最后一个值。
我是 swift 新手,我真的不明白错误在哪里。 如果有人可以提供帮助,我将不胜感激。
谢谢!
【问题讨论】:
-
首先让我们做一点清理工作。
AgendaDate理想情况下应该有其现有属性,agendaDates重命名为date。这是因为属性是单数而不是复数,并且对于实体及其属性之一使用相同的名称可能会变得非常混乱。接下来考虑添加一个从AgendaDate回到AgendaEvent的反对一关系,这样你就可以得到一个日期并弄清楚当时正在发生什么。这些更改将使其他人更容易跟踪您的代码中发生的事情,这有望带来更好的答案。 -
@theMikeSwan 感谢您的回答。我将更改属性名称。反向关系已经存在......我将其命名为:议程事件。我编辑了我的问题来解释什么是议程事件..
标签: ios swift core-data nsmanagedobject