2011-11-19 61 views
1

我爲iPad創建了一個使用Apple的"Use CoreData"模板的項目。使用NSFetchRequest填充數組(CoreData)

我定製了幾件東西,例如對象的名稱,但系統保持不變。

Apple使用MasterViewController.h這是一個UITableViewControllerDetailViewController.h這是一個簡單的UIViewController。一旦你選擇UITableView中的一個對象MasterViewController.h它將其屬性賦予DetailViewController

現在的問題:

我創建了一個第三視圖控制器,名爲ResultsViewController.h,其應顯示的所有數據(對象的屬性)。

我想用一個或多個NSArray(s),它應該包含我的所有數據(而不僅僅是選擇,但所有。所以,如果你創建了5個對象,你想擁有5倍NSArray)。

(1)如何獲取xcoredatamodel的值以便能夠在ResultsViewController中訪問它們?發送取回請求不適合我? (2)如何確定我在UITableViewMasterViewController.h)中創建了多少個對象?

CoreData結構:

簡單,一個實體,幾個屬性,就是它了!

非常感謝!

回答

9

首先:你不應該把所有的數據放到數組中。一旦數據量增長,這會導致內存問題。核心數據實際上設計用於非常高效地獲取所需的數據,而無需維護昂貴的並行數據結構。

所以最好的方法是將相同的NSManagedObjectContext傳遞給ResultsViewController並讓它根據需要獲取自己的數據。

但是,如果您確實想要提取所有數據,那很簡單。

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"EntityName" 
     inManagedObjectContext:self.managedObjectContext]; 
[fetchRequest setEntity:entity]; 
NSError *error = nil; 
NSArray *fetchedObjects = [self.managedObjectContext 
     executeFetchRequest:fetchRequest error:&error]; 
[fetchRequest release]; 

數組fetchedObjects現在包含您的所有數據。您可以通常的方式訪問屬性(例如使用點符號或KVC)。

+0

謝謝,我自己也找到了一個類似的解決方案,這是遲來接受答案的原因。 – DAS