2011-02-23 63 views
1

我已经梳理了SO,Google小组以及blog-o-sphere,试图找到一个如何让Three20库与Core Data一起工作的示例,并且没有找到太多可以说。Three20 +核心数据简单示例

有没有人知道我在哪里可以找到一个简单的教程(或愿意发布一个)如何使用核心数据实体和Three20?也许类似于:

我有一个名为Book的核心数据实体,它具有字符串属性titledescription。我将如何创建一个简单的应用程序,该应用程序可以打开显示所有书籍列表的表格视图,以及何时触摸一行,将视图推送到显示选定书籍对象属性的导航控制器上? (只是一个想法 - 任何显示如何使用Core Data/Three20将非常感谢)

谢谢!

回答

0

现在有一个三分支 - CoreDataSupport - 支持使用NSFetchedResultsController。在那里你会找到一个NSFetchedResultsDataSource。

1

就我所知(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调用中的参数传递,或仅传递实体的主键,并在详细视图控件中再次获取对象河

+0

我到目前为止已经读过,很容易设置一个NSFetchedResultsController并使用它来填充和更新'TTSectionedDataSource'。但是,我完全陷入困境的是如何将Core Data对象映射到URL。因此,一旦你处于tableview显示记录(我的例子中的书籍)的地步,你如何设置一个'TTTableItem',这样当触摸它时,它将链接到一个“详细视图”,并将Core Data对象作为一个论点? – 2011-02-23 15:57:13

+0

我在原始文章中添加了一些细节以回答您的问题。根据NSFetchedResultsController,我没有与它一起使用Three20。需要对它进行一些研究:)还有一些我没有扩展的通用对象传递机制,因为我觉得它使用起来很尴尬。 – 2011-02-23 16:48:44

1

核心数据和Three20不会有任何具体的实现。它们是您可以用来自己实现特定实现的工具。您使用Three20来显示核心数据中的数据。

我建议你转储Three20并首先学习编写标准表视图控制器的基础知识。您只需在Xcode中创建一个新的iPhone应用程序并选择“使用核心数据进行存储”即可看到核心数据驱动的表视图控制器的基础知识。 enter image description here

模板代码至少会指引您正确的方向,并应该帮助您更好地使用MVC,这将有助于您实现Three20。同时,您还应该考虑使用mogenerator+xmo'd。这是创建自定义托管对象时唯一的方法。

当有疑问时,consult the master并在SO上询问特定的核心数据问题。