我已经梳理了SO,谷歌小组以及博客o-sphere试图找到如何让Three20库与Core Data一起工作的例子,并且没有太多可说的。
有谁在这里知道我在哪里可以找到一个简单的教程(或愿意发布一个)如何使用Core Data实体和Three20?也许是这样的:
我有一个名为Book
的核心数据实体,它具有字符串属性title
和description
。如何创建一个简单的应用程序,该应用程序将打开一个表格视图,显示所有书籍的列表,当触摸行时,将视图推送到显示所选书籍对象属性的导航控制器? (只是一个想法 - 任何展示如何使用Core Data / Three20的内容都将非常感激)
谢谢!
答案 0 :(得分:1)
据我所知(Three20文档很稀疏),Three20没有自动的方式来处理Core Data。
我通常做的是:
通过实现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应用程序并选择“使用核心数据进行存储”来查看核心数据驱动的表视图控制器的基础知识。
模板代码至少会指向正确的方向,并且应该帮助您更好地理解MVC,这将有助于您实现Three20。同时,您还应该考虑使用mogenerator+xmo'd。在创建自定义托管对象时,这是唯一的飞行方式。
如果有疑问,consult the master并在此处询问具体的核心数据问题。
答案 2 :(得分:0)
现在有一个三分支 - CoreDataSupport - 支持使用NSFetchedResultsController。在那里你会找到一个NSFetchedResultsDataSource。