2010-12-08 52 views
2

我目前正在开发针对iOS 4.2的iPhone。从CoreData填充TableViews的层次结构 - 我应该依靠NSFetchedResultsController

我想知道什么是最好的方式来填充一组TableViews的是一个像模型对象树的时候。每个级别与其下面的项目都有一对多的关系。

下面是数据的排序我处理一个简单的例子:

MAGZINE [有许多]问题[有许多]文章

我想创建一个TableView中与杂志的名单。点击单元格会产生一系列问题。点击问题单元格将生成文章列表。

在我看来,这样做的简单的方法是创建一个杂志的牵强的NSSet根视图控制器。当一个杂志单元被轻敲时,控制器创建一个新的IssueViewController并将其传递给selectedMagazine.issues。现在在IssueViewController中,当点击一个问题单元格时,相应问题的文章NSSet被传递给一个新的ArticleTableViewController。

什么我不知道的是以下...

  • 是否有“最好”的方式去获取数据了共识?使用NSFetchedResultsController从根节点遍历对象图?
  • 如果一段时间内没有访问该问题,核心数据是否会从其母公司的杂志集中卸载一些内容(如问题)?或者随着对象图上更多的节点被访问,更多的东西会让内存混乱?

我已经在这里做了相当数量的浏览,但没有看到任何可以回答我的问题的东西。提前致谢。

回答

1

当使用这些向下钻取类型的接口时,我更喜欢使用NSFetchedResultsController。学习曲线有点陡峭,但它提供了许多功能和控制,尤其是在使用由xCode提供的应用程序模板时,您通常必须自己编写代码。即在NSFetchedResultsController的设置中,您可以设置您的获取批量大小(对性能调优有帮助),部分(UI优化),排序描述符等。如果您要使用NSSet路由,您必须手动编写大量代码NSFetchedResultsController已经为您提供了什么。

我问过Apple Dev论坛是否有关于何时使用NSSet或NSArray v。NSFetchedResultsController的最佳实践,以及Apple专家的回应是否取决于您和您的实施。在过去几年中完成了几个应用程序之后,我明白他们现在从哪里来。这实际上取决于你需要什么样的应用程序,以及你想花多少时间来学习NSFetchedResultsController的细节。

-2

我不知道你使用,(ABAP/SAP ???)什么软件工具或编程语言的,但我有不同的工具和层次结构的工作,这是我学习。

首先,跳过视觉控制/数据库连接,并且考虑数据模型,altought树比图来使用。其次,存储在不同表格中并表示为分层的数据很难使用和管理。

三。不要尝试使用所有这些层次信息来加载/填充控件,请逐步进行。

例如,仅在您的“问题”中加载treeview控件第一级节点。稍后,添加一个加载所选问题/ treenode的“文章”的按钮。

另一种方式,就是与网格的形式与所有“问题”,补充说,打开一个新的形式和电网与涉及到具体选择的“问题”行的小区的“文章”的按钮。

干杯。

+2

您是否看到问题标签? – BoltClock 2010-12-08 23:48:59

+0

嘿,感谢您的快速回复:)我正在使用CoreData orm框架在iPhone上执行此操作。 – 2010-12-08 23:50:22