gpt4 book ai didi

ios - NSFetchedResultsController -sectionNameForKeypath 如何获取其数据?

转载 作者:行者123 更新时间:2023-11-29 05:05:43 25 4
gpt4 key购买 nike

我一直在使用 NSFetchedResultsController 做一些噩梦,并试图找到解决我的问题的解决方案 here ,我发现 fetchedResultsController 获取的数据有些不寻常,特别是 sectionNameForKeypath 参数。

假设我有一个包含 2 个实体和关系的对象模型,如下所示:

项目 <<--> 类别

Category 有一个名为 displayOrder 的 (NSNumber*) 属性,用于将获取的 Item 实例分成表格 View 中的部分:

NSFetchedResultsController *controller = [[NSFetchedResultsController alloc]
initWithFetchRequest:fetchRequest
managedObjectContext:moc
sectionNameKeyPath:@"category.displayOrder"
cacheName:nil];

如果我想以某种方式动态地操纵 displayOrder 的输出,显而易见的选择是覆盖它的 getter 方法并在那里做我想做的任何事情。但问题是,即使我在 sectionNameForKeypath 中指定了 displayOrder 的 getter,在 fetchRequest 期间或 fetchedResultsController 也根本不会访问它,而且我可以看到fetchedResultsController 使用它的值来分隔和显示各个部分。

这是一个被覆盖的 getter 方法的简单示例,该方法永远不会被调用。这被放置在我的 Category 类中:

-(NSNumber*)displayOrder
{
NSLog (@"displayOrder getter called");
NSNumber *displayOrder = [NSNumber numberWithInt:0];
return displayOrder;
}

我还尝试覆盖 awakeFromFetch 无济于事(也没有被调用,但这并不令我感到惊讶,因为我正在获取 Item 实例并通过访问类别及其属性关系)。

最后我的问题是:category.displayOrder 值如何传递到我的 fetchedResultsController,有没有办法让我控制这个输出?

预先感谢您的任何想法!

罗格

最佳答案

自 iOS 3.2 起,NSFetchedResultsController 尽可能直接从数据库使用由sectionNameKeyPath 标识的字段,而不是为每个项目创建对象。您可以尝试对sectionNameKeyPath使用非持久属性,这(根据文档)将强制它创建对象,但如果只是重命名UITableView的部分,那么最好在中进行映射tableView:titleForHeaderInSection:.

关于ios - NSFetchedResultsController -sectionNameForKeypath 如何获取其数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5371713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com