我已实现awakeFromInsert
在核心数据对象中设置一些默认值和关系。但是,该方法被调用两次,这意味着我添加的to-many值被多次添加。
我正在使用父和子托管对象上下文。
是什么给出的?
答案 0 :(得分:8)
awakeFromInsert
。保存此上下文并将更改推送到父上下文时,将再次调用它。
您可以查询self.managedObjectContext
属性以确定调用该方法的情况。根据您的特定用例,您可能需要检查是否存在parentContext
并采取相应措施。
答案 1 :(得分:0)
感谢jrturton的帮助:
这是最简单的一个: 当parentContext为null时,表示保存此上下文时,您可以自定义逻辑,例如递增表号
- (void)awakeFromInsert
{
if (!self.managedObjectContext.parentContext) {
//setting tableNumber
[self willChangeValueForKey:@"number"];
[self setPrimitiveNumber:tableNumber];
[self didChangeValueForKey:@"number"];
}
}