0
我非常迷恋这个,但很可能我误解了有关Core Data的一些信息。核心数据对多关系集计数不会更新,直到应用程序重新启动
我有2个管理对象:Bag
和Item
。他们都有“多对多”的直接和反向关系。
所以,我通过从我的Bag
类中调用addItemsObject:
来添加Item
到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"
}
谁能告诉我这是怎么回事?谢谢。
覆盖该方法是强烈不鼓励,但它并没有那么糟糕..你实际上只需要手动更新多集属性,但我仍然将你的答案标记为正确的〜谢谢! – believesInSanta 2014-09-07 06:00:28
不,是的。您应该*不*覆盖该方法。核心数据的关系错误行为取决于它以特定的方式工作 - 这就是为什么当重写它时,这对你来说是打破了。 – quellish 2014-09-07 06:02:47
我明白你的意思了。谢谢。 – believesInSanta 2014-09-07 06:19:53