【问题标题】:Core Data Relationship shown in tableViewtableView 中显示的核心数据关系
【发布时间】:2011-03-01 10:00:15
【问题描述】:

我正在开发一个带有显示核心数据表内容的表视图的应用程序。 数据模型是这样的: 实体(名称,代码)->>翻译(文本,代码)

我使用通常的 NSFetchedResultsController 检索所有实体,但是有一次是时候填充每一行(通过 tableview cellForRowAtIndexPath:) 我必须深入每个实体以根据用户输入的代码检索 2 个翻译。我正在使用 NSFetchRequest 来做到这一点,但我想知道这是否是正确的做法(每次填充一行时一个获取请求)。 本能地,我会在 NSFetchedResultsController 中检索我需要的所有数据,而不是每次填充单元格时都搜索每个翻译,但我不知道如何。 有没有人有一些建议,或者一些有趣的链接?

【问题讨论】:

    标签: core-data ios4 nsfetchrequest relationships


    【解决方案1】:

    如果每个单元格必须显示与每个 Entity 对象相关的 Translation 对象,那么您只需将关系从获取的 Entity 对象遍历到适当的 Translation 对象。

    获取 Entity 对象并构建表格以显示它们后,然后访问每个单元格行的翻译中的值,如下所示:

    NSSet *translations=[anEntityObject valueForKey:@"translations"];
    

    ... 它为 tableview 行表示的 Entity 对象返回一组 Translation 对象。

    作为一个非常普遍的规则,您只对每个 tableview 进行一次提取。表视图应配置为显示与特定实体相关的数据。

    【讨论】:

    • 这正是我正在做的,只是感觉内存很贵。感谢@TechZen 的确认。有不同意见的人吗?
    • 我描述的模式是 90% 的应用程序会使用的方式,它是你绝对应该开始使用的方式。 NSFetchedResultController 非常适合内存使用。除非您有超过 1,000 行的表,否则这很少会成为问题。如果您确实有内存问题,请参阅 Core Data 编程指南以了解更改获取以控制内存的方法。但是,请记住 Knuth 的格言,“过早的优化是万恶之源”。不要浪费时间试图避免你可能永远不会遇到的问题。编写,测试,然后优化。尤其是在学习新的 API 时。
    • "过早的优化是万恶之源。"好一个!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多