我对这个很难过,但很可能我再次误解了有关Core Data的内容。
我有2个托管对象:Bag
和Item
。他们都有很多人。直接和反向关系。
所以我通过调用Item
课程中的Bag
向addItemsObject:
添加Bag
。
现在我想查看有多少Bag
个对象有Item
,所以我正在做:
// in my Bag implementation:
- (void)didChangeValueForKey:(NSString *)inKey withSetMutation:(NSKeyValueSetMutationKind)inMutationKind usingObjects:(NSSet *)inObjects
{
Item *myItem = [inObjects anyObject]; // for simplicity, but this is returning my added Item for sure.
NSInteger count = myItem.bags.count;
NSLog(@"%@ is in %li bags", myItem.name, (long)count);
// keeps on giving me "0 bag"
}
有谁可以告诉我发生了什么?感谢。
答案 0 :(得分:0)
首先,您没有(也不应该)实施KVC访问者- (void)didChangeValueForKey:(NSString *)inKey withSetMutation:(NSKeyValueSetMutationKind)inMutationKind usingObjects:(NSSet *)inObjects
。核心数据生成的访问器将为您实现。
覆盖此方法可能是您问题的一部分。您会注意到documentation for this method says:
您不得覆盖此方法。
您可以使用其他机制(例如KVO)来通知此属性的更改。