你好再次朋友,
我正在编写一个具有一对多关系的coreData应用程序。
我有这个功能:
@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对象创建算法。
谢谢 - 我希望我写得正确。我在概念上是错误的吗?我很困惑。
答案 0 :(得分:0)
不应该timeslotCount
是self.timeslotSet.timeslotCount
吗?另外,你真的需要那个变量吗?你不应该只使用timeslotSet.timeslots.count
吗?这将消除对单独功能的需要。
对于您的其他问题,您通常会保存整个上下文。这将保存所有新对象以及对现有对象的所有更改。