我仍然习惯了核心数据的运作方式,我一直在寻找有关我的问题的信息,但我没有找到明显解决我确切问题的答案。
我有三类托管对象:贷款,借款人和照片。借款人对象与贷款对象具有一对多关系(意味着借款人可以拥有多笔贷款,但贷款只能有一个借款人)。借款人对象也与照片对象具有一对一的关系。
我正在使用NSFetchedResultsController来使表更新一组贷款对象中的更改。当其他借用者属性更改时,更改通知到达NSFetchedResultsController并且我的表更新。但是当photo属性更改为指向另一个照片对象时,则不会向NSFetchedResultsController传递任何通知。借款人改变其照片关系时似乎没有告知与借款人有关的贷款。
请帮忙!
答案 0 :(得分:2)
您可以尝试处理NSManagedObjectContextObjectsDidChangeNotification
通知。
答案 1 :(得分:0)
它有点松鼠,但你可以做到以下几点,假设你已经为贷款,借款人和照片类子类化了NSManagedObject。
1。)在贷款中,为贷款照片的“图像”属性设置KVO。
2.。)在贷款中,添加changeCount属性(NSNumber *)。
3。)当提示贷款改变其照片的图像时,请增加changeCount。
所以,在非常粗糙的代码中,类似这样的东西:
在Load.m中:
- (void) awakeFromFetch
{
[super awakeFromFetch];
[[self photo] addObserver:self
forKeyPath:@"image"
options:NSKeyValueObservingOptionNew
context:nil];
}
- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([keyPath isEqualToString:@"image"])
{
NSInteger temp = [[self changeCount] intValue];
++temp;
[self setChangeCount:[NSNumber numberWithInteger:temp]];
}
}
有一些警告。
1)这只涉及'fetch'和 not with'insert'(即新贷款)。
2)这假设获得的贷款将有一张照片。
3)这假设您已将“changeCount”属性添加到贷款。
4)虽然我在我的一个应用程序中使用远程类似的机制,但我没有测试过这个。