Three20 +核心数据简单示例

时间:2011-02-23 15:07:33

标签: iphone cocoa-touch three20

我已经梳理了SO,谷歌小组以及博客o-sphere试图找到如何让Three20库与Core Data一起工作的例子,并且没有太多可说的。

有谁在这里知道我在哪里可以找到一个简单的教程(或愿意发布一个)如何使用Core Data实体和Three20?也许是这样的:

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

谢谢!

3 个答案:

答案 0 :(得分:1)

据我所知(Three20文档很稀疏),Three20没有自动的方式来处理Core Data。

我通常做的是:

  • 从Core Data获取实体集
  • 将相关数据(来自实体)加载到TTTableViewController中的TTTableViewDataSource(例如TTSectionedDataSource)
  • 瞧!

通过实现TTTableViewDataSource子类并让它收集/管理实体,可能有一种更动态的方法,但我不认为这是值得的。

(在Three20中将实体加载到数据源之前,需要将它们转换为表项,因为数据源不完全是Three20中的数据源)。

e.g。

[TTSectionedDataSource dataSourceWithObjects:
        @"",   // section header
        [TTTableTextItem itemWithText:@"An item" URL:@"http://www.facebook.com"],
        [TTTableSummaryItem itemWithText:@"Another item"],
        nil];

更新:我认为您不能通过Three20 URL方案将您的实体直接传递到详细信息视图(尽管存在通用对象机制)。您可以通过query参数将对象作为NSDictionary的一部分传递。

e.g。您可以使用

等映射
[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调用中的参数或仅通过实体的主键传递相关数据,并在详细视图控制器中再次获取对象。

答案 1 :(得分:1)

Core Data和Three20将没有任何具体实施。它们是您可以用来自己实现特定实现的工具。您使用Three20显示Core Data中的数据。

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

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

如果有疑问,consult the master并在此处询问具体的核心数据问题。

答案 2 :(得分:0)

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