在我当前的应用程序中,我目前正在使用MagicalRecord从REST API导入数据,其中UITableView实现了NSFetchedResultController。
出现问题的情况:
请参阅以下代码以初始化我的NSFetchedResultController并从数据源导入。
通过MagicalRecord库创建NSFetchedResultController
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"friend_type != %i", FacebookFriend];
self.friendsResultController = [Friend fetchAllGroupedBy:@"friend_type" withPredicate:predicate sortedBy:@"friend_type,user.nickname" ascending:YES delegate:self];
在对Facebook进行第一次API调用后,通过MagicalRecord库创建Friend实体:
Friend* userFriend = [Friend createEntity];
userFriend.friend_type = [NSNumber numberWithInteger:FacebookFriend];
如果我们的本地REST API解决了这些FacebookFriends,请更新这些FacebookFriends:
Friend* userFriend = [Friend ....] // Correct friend was fetched
userFriend.friend_type = [NSNumber numberWithInteger:ResolvedFacebookFriend];
如何通过这些更改通知NSFetchedResultController?如果不是这是Apple的错误,还是我应该以不同的方式设置我的CoreData?
编辑 - 2013年11月14日
我发现对象是用friend_type ResolvedFacebookFriend保存的。并像这样再次保存:
userFriend.friend_type = userFriend.friend_type;
// Save the context again
NSFetchedResultController突然看到变化,并在UITableView中插入一行。