2011-02-23 180 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上詢問特定的核心數據問題。