Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 未调用NSFetchedResultsController controllerDidChangeContent_Ios_Core Data_Nsfetchedresultscontroller - Fatal编程技术网

Ios 未调用NSFetchedResultsController controllerDidChangeContent

Ios 未调用NSFetchedResultsController controllerDidChangeContent,ios,core-data,nsfetchedresultscontroller,Ios,Core Data,Nsfetchedresultscontroller,当我的数据发生更改时,更新我的NSFetchedResultsController时遇到问题。我的简化模型是这样的 我有一个查询来列出PSPlayer的所有psarms,它的PSMetaData属性设置为YES NSPredicate *selected = [NSPredicate predicateWithFormat:@"player.metadata.selected == %@", @YES]; NSFetchRequest *request = [PSWeapon MR_reque

当我的数据发生更改时,更新我的
NSFetchedResultsController
时遇到问题。我的简化模型是这样的

我有一个查询来列出
PSPlayer
的所有
psarms
,它的
PSMetaData
属性设置为
YES

NSPredicate *selected = [NSPredicate predicateWithFormat:@"player.metadata.selected == %@", @YES];
NSFetchRequest *request = [PSWeapon MR_requestAllWithPredicate:selected];
request.sortDescriptors = @[];
NSManagedObjectContext *context = [NSManagedObjectContext MR_defaultContext];
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
                                                                    managedObjectContext:context
                                                                      sectionNameKeyPath:nil
                                                                      cacheName:nil];
self.fetchedResultsController.delegate = self;

[self.fetchedResultsController performFetch:nil];
第一个查询工作正常,但在选择其他播放机时不会调用
-[NSFetchedResultsControllerDelegate controllerDidChangeContent:

我甚至在选择了新玩家后发布了自己的通知,并再次调用
[self.fetchedResultsController performFetch:nil]发布时,但这也不起作用

我做错了什么


cheers

fetchedResultsController将只跟踪作为底层获取请求主题的实体的更改—在您的情况下是
pswearm
对象。对由关系链接的对象的更改将不会被检测到,即使它们会影响谓词的结果。这就是说,您的替代方法应该是有效的——您可以发布相关的代码吗?实际上它确实有效。选择新播放器时,我正在调用
-[NSFetchedResultsController performFetch:
来“强制”更新,并依赖
-[NSFetchedResultsController委派控制器IDChangeContent:
来更新UI,但在初始提取时不调用后者。因此,在调用
performFetch
后,我只需刷新UI。另一种方法不是发布我自己的通知,而是让另一个
NSFetchedResultsController
只查询所选播放器。当此fetchedResultController更改时,我可以重新获取我的武器fetchedResultController