NSFetchedResultsController在某些情况下会忽略更改吗?

时间:2013-11-14 11:06:09

标签: ios objective-c rest core-data nsfetchedresultscontroller

在我当前的应用程序中,我目前正在使用MagicalRecord从REST API导入数据,其中UITableView实现了NSFetchedResultController。

出现问题的情况:

  1. 我使用谓词设置NSFetchedResultController如下:[NSPredicate predicateWithFormat:@“friend_type!=%i”,FacebookFriend];
  2. 首先,我从Facebook中检索朋友,获取friend_type FacebookFriend(来自枚举)。
  3. 我将尝试通过REST API调用来解析他们的Facebook ID。
  4. 如果用户已经解决,我会将他们的friend_type更改为ResolvedFacebookFriend(来自枚举)
  5. NSFetchedResultController不会收到这些更改的通知。
  6. 请参阅以下代码以初始化我的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中插入一行。

0 个答案:

没有答案