Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.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
Core data NSFetchedResultsController上未反映更改的sectionNameKeyPath属性值_Core Data - Fatal编程技术网

Core data NSFetchedResultsController上未反映更改的sectionNameKeyPath属性值

Core data NSFetchedResultsController上未反映更改的sectionNameKeyPath属性值,core-data,Core Data,我有一个由NSFetchedResultsController支持的表视图 只要基础上下文中的对象发生更改,NSFetchedResultsController就会自动在表视图上反映新的属性值。耶 我注意到的一个例外是,sectionNameKeyPath使用的属性值的更新不会自动反映出来 我猜sectionNameKeyPath使用的属性值对于NSFetchedResultsController来说非常重要,因此我需要再次执行蚀刻和重新加载表视图 更新:以下是用于配置提取请求的代码 - (vo

我有一个由NSFetchedResultsController支持的表视图

只要基础上下文中的对象发生更改,NSFetchedResultsController就会自动在表视图上反映新的属性值。耶

我注意到的一个例外是,sectionNameKeyPath使用的属性值的更新不会自动反映出来

我猜sectionNameKeyPath使用的属性值对于NSFetchedResultsController来说非常重要,因此我需要再次执行蚀刻和重新加载表视图

更新:以下是用于配置提取请求的代码

- (void)configureFetch {

CoreDataHelper *cdh = [(AppDelegate *)[[UIApplication sharedApplication] delegate] cdh];

NSFetchRequest *request =
[NSFetchRequest fetchRequestWithEntityName:@"Item"];

request.sortDescriptors =
[NSArray arrayWithObjects:
 [NSSortDescriptor sortDescriptorWithKey:@"locationAtHome.storedIn"
                               ascending:YES],
 [NSSortDescriptor sortDescriptorWithKey:@"name"
                               ascending:YES],
 nil];
[request setFetchBatchSize:15];
self.frc =
[[NSFetchedResultsController alloc] initWithFetchRequest:request
                                    managedObjectContext:cdh.context
                                      sectionNameKeyPath:@"locationAtHome.storedIn"
                                               cacheName:nil];
self.frc.delegate = self;
}
以及执行提取的代码:

- (void)performFetch {

if (self.frc) {
    [self.frc.managedObjectContext performBlockAndWait:^{
        NSError *error;
        [self.frc performFetch:&error];
        if (error) NSLog(@"%@ '%@' %@ (Reason: %@)",
                         self.class, NSStringFromSelector(_cmd),
                         error.localizedDescription, error.localizedFailureReason);

        [self.tableView reloadData];
    }];
}
}

问题不是用作
sectionNameKeyPath
的属性发生了更改,而是相关对象中的属性发生了更改

回迁结果控制器只跟踪回迁对象本身(您案例中的项目对象)的更改,而不跟踪相关对象的更改


唯一的解决方案(据我所知)是将节作为附加属性添加到项实体,即使这意味着您有重复的数据。

问题不在于用作
sectionNameKeyPath
的属性发生了更改,而在于相关对象中的属性发生了更改

回迁结果控制器只跟踪回迁对象本身(您案例中的项目对象)的更改,而不跟踪相关对象的更改


唯一的解决方案(据我所知)是将节作为附加属性添加到项实体,即使这意味着您有重复的数据。

您可以显示创建获取结果控制器的代码(带有获取请求、谓词、排序描述符)吗?您可以显示创建获取结果控制器的代码吗(使用fetch请求、谓词、排序描述符)?这很有意义。每当此值更改时,我将通过向performFetch发送通知来解决此问题。感谢您的及时响应!这很有意义。每当此值更改时,我将通过向performFetch发送通知来解决此问题。感谢您的及时响应!