就我所知(Three20文档很稀疏),Three20没有自动的方式来处理Core Data。
我通常做的是:
- 从核心数据获取的一组实体
- 在TTTableViewController
- 瞧负载相关的数据(从实体)到TTTableViewDataSource(如TTSectionedDataSource) !
通过实现TTTableViewDataSource子类并让它收集/管理实体,可能会有一种更动态的方式来做到这一点,但我不认为这是值得的。 (在Three20中将实体加载到数据源之前,需要将它们转换为表项,因为在Three20中数据源不完全是数据源)。
例如
[TTSectionedDataSource dataSourceWithObjects:
@"", // section header
[TTTableTextItem itemWithText:@"An item" URL:@"http://www.facebook.com"],
[TTTableSummaryItem itemWithText:@"Another item"],
nil];
更新:我不认为你可以通过Three20 URL方案直接通过您的实体的细节视图(虽然有一个通用对象的机制)。您可以通过查询参数将对象作为NSDictionary的一部分传递。
例如你可以有一个映射如
[map from:@"example://bookDetails/(initWithName:)" toViewController:[BookDetailsController class]];
和这样
- (id) initWithName:(NSString *)theName query:(NSDictionary *)query
方法定义可以使用该推细节视图控制器
// navigationURLString = @"example://bookDatails/Alice in WonderLand" (in URL encoding)
[self.navigationController pushViewController:[[TTNavigator navigator]
viewControllerForURL:navigationURLString query:dictionaryWithEntity] animated:YES];
备选地,可以将相关数据作为init调用中的参数传递,或仅传递实体的主键,并在详细视图控件中再次获取对象河
我到目前为止已经读过,很容易设置一个NSFetchedResultsController并使用它来填充和更新'TTSectionedDataSource'。但是,我完全陷入困境的是如何将Core Data对象映射到URL。因此,一旦你处于tableview显示记录(我的例子中的书籍)的地步,你如何设置一个'TTTableItem',这样当触摸它时,它将链接到一个“详细视图”,并将Core Data对象作为一个论点? – 2011-02-23 15:57:13
我在原始文章中添加了一些细节以回答您的问题。根据NSFetchedResultsController,我没有与它一起使用Three20。需要对它进行一些研究:)还有一些我没有扩展的通用对象传递机制,因为我觉得它使用起来很尴尬。 – 2011-02-23 16:48:44