NSFetchController更新总是落后一步

时间:2014-09-12 08:14:47

标签: ios objective-c nsfetchedresultscontroller nsfetchrequest

我有一个这样的数据库方案:

enter image description here

我像这样初始化我的fetchcontroller:

        NSLog(@"%s Only tracked POI query", __PRETTY_FUNCTION__);
        NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
        NSEntityDescription *entity = [NSEntityDescription entityForName:@"POI" inManagedObjectContext:context];
        [fetchRequest setEntity:entity];

        NSPredicate * predicate = [NSPredicate predicateWithFormat:@"rank.tracked == %@",[NSNumber numberWithBool:YES]];

        [fetchRequest setPredicate:predicate];

       NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
        [fetchRequest setSortDescriptors:@[sort]];

        [fetchRequest setFetchBatchSize:20];

        result = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
                                                     managedObjectContext:context sectionNameKeyPath:nil
                                                                cacheName:nil];

我有一个像你在屏幕截图上看到的Rank实体。当我将tracked(boolean)设置为YES时,这个fetchcontroller应该显示新的POI。因为我检索了Rank.tracked == YES的所有POI。

它有效,但总是落后一步。我点击跟踪排名没有任何反应,当我点击另一个Rank来跟踪时,tableview会更新前一次点击的更改。

我的tableview正在扩展https://gist.github.com/CloudNiner/8681866这个stanford类。

有人可以解释一下为什么它不会马上更新吗?我在SO Changing a managed object property doesn't trigger NSFetchedResultsController to update the table view

上找到了这个

但我不知道它对我有什么帮助。

0 个答案:

没有答案