就我所知(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