核心数据到多个关系集计数在应用重启之前不会更新

时间:2014-09-06 09:09:13

标签: ios objective-c core-data

我对这个很难过,但很可能我再次误解了有关Core Data的内容。

我有2个托管对象:BagItem。他们都有很多人。直接和反向关系。

所以我通过调用Item课程中的BagaddItemsObject:添加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"
}

有谁可以告诉我发生了什么?感谢。

1 个答案:

答案 0 :(得分:0)

首先,您没有(也不应该)实施KVC访问者- (void)didChangeValueForKey:(NSString *)inKey withSetMutation:(NSKeyValueSetMutationKind)inMutationKind usingObjects:(NSSet *)inObjects。核心数据生成的访问器将为您实现。

覆盖此方法可能是您问题的一部分。您会注意到documentation for this method says

  

您不得覆盖此方法。

您可以使用其他机制(例如KVO)来通知此属性的更改。