将对象添加到CoreData关系

时间:2015-12-26 12:44:11

标签: ios core-data swift2 one-to-many nsset

你好再次朋友,

我正在编写一个具有一对多关系的coreData应用程序。

enter image description here

我有这个功能:

@IBAction func addButton(sender: AnyObject) {

    ...
    print("\(self.timeSlotSet!.timeSlots)\n")
    self.timeSlot!.timeSlotSet = self.timeSlotSet!
    print("\(self.timeSlotSet!.timeSlots)\n")
    ...
    self.timeSlotSet!.calculateNumberOfItems()
    print("\(self.timeSlotSet!.timeSlotCount!)\n")


}

其中calculateNumerOfItems函数是:

func calculateNumberOfItems() {
    timeSlotCount = timeSlots!.count
}

将以下结果打印到控制台:

Optional(Relationship 'timeSlots' on managed object (0x7ca721e0) <TimeSlotSet: 0x7ca721e0> (entity: TimeSlotSet; id: 0x7be40040 <x-coredata://39B379DC-2F28-42FE-9716-084A4769CD40/TimeSlotSet/p2> ; data: {
    name = nil;
    test = 0;
    timeSlotCount = 0;
    timeSlots =     (
    );
}) with objects {(
)})

Optional(Relationship 'timeSlots' on managed object (0x7ca721e0) <TimeSlotSet: 0x7ca721e0> (entity: TimeSlotSet; id: 0x7be40040 <x-coredata://39B379DC-2F28-42FE-9716-084A4769CD40/TimeSlotSet/p2> ; data: {
    name = nil;
    test = 0;
    timeSlotCount = 0;
    timeSlots =     (
        "0x7be5a9d0 <x-coredata://39B379DC-2F28-42FE-9716-084A4769CD40/TimeSlot/p1>"
    );
}) with objects {(
    <TimeSlot: 0x7be3c2e0> (entity: TimeSlot; id: 0x7be5a9d0 <x-coredata://39B379DC-2F28-42FE-9716-084A4769CD40/TimeSlot/p1> ; data: {
    beginDate = "2015-12-26 12:20:43 +0000";
    currentSeconds = 2;
    endDate = "2015-12-26 12:20:46 +0000";
    timeSlotSet = "0x7be40040 <x-coredata://39B379DC-2F28-42FE-9716-084A4769CD40/TimeSlotSet/p2>";
})
)})

0

我在措辞方面有困难......但是:

我相信这一行:         self.timeSlot!.timeSlotSet = self.timeSlotSet! 创建了TimeSlotSet和TimeSlot之间的关系 - 并将一个timeSlot添加到TimeSlotSet的timeSlots属性(这是一个NSSet)

我也相信它是成功的,因为当我将timeSlotSet打印到控制台时,我提交此行后会有所不同。 (右?)

那么为什么timeSlotCount仍为0? 这不意味着timeSlots仍然是空的吗?

另外,我是否必须将timeSlot保存到持久存储,还是可以保存TimeSlotSet?我想保存两者。我是否必须明确保存两者?或者保存一个保存两个? (因为他们之间有关系)

最终目标是我可以将许多TimeSlot项目保存到TimeSlotSet,然后迭代其timeSlots NSSet并为所有这些TimeSlot对象创建算法。

谢谢 - 我希望我写得正确。我在概念上是错误的吗?我很困惑。

1 个答案:

答案 0 :(得分:0)

不应该timeslotCountself.timeslotSet.timeslotCount吗?另外,你真的需要那个变量吗?你不应该只使用timeslotSet.timeslots.count吗?这将消除对单独功能的需要。

对于您的其他问题,您通常会保存整个上下文。这将保存所有新对象以及对现有对象的所有更改。