2010-06-16 33 views
2

所以我有一個.xcdatamodel與約十二個實體定義和相互關聯,具有屬性等。到目前爲止,我一直在使用NSTableViews來顯示/輸入數據,以及爲每個實體實例化的NSArrayControllers。這一切都很好。他們都配合應用程序委託的託管對象上下文(MOC)核心數據,託管對象上下文,NSArrayController ..把我拉直一點

但現在我試圖以編程方式訪問這些數組中的數據,我發現它這樣做是鈍的。經過大量的閱讀,看起來我應該做的是去MOC爲給定的實體提取數據。我還沒有完成這個工作,但是沒問題。

我不明白,但是,當我不通過NSTableView等進入而不使用NSArrayControllers時,如何使用核心數據。就像我想完全處理我的項目Model包中的一些.xcdatamodel實體(不涉及GUI)。我是否還需要實例化一個NSArrayController,以便我可以「準備一個實體的內容」並對其進行管理和初始化,以及所有這些?或者還有另外一種方法可以直接與MOC配合,併爲給定的實體添加/刪除/獲取數據?

我想說的是,我真的不清楚應該如何進行工作的事情,除非我做一些簡單的情況下查看< - > NSArrayController的,然後模型< - >商務部

回答

2

您應該採取請在NSManagedObjectContext上查看NSFetchRequestexecuteFetchRequest:error:方法。

通過陣列控制器訪問數據可能會非常棘手。我發現數組控制器通常設計用於UI元素。數組控制器將使用一些技巧來保持UI快速。例如,它將在後臺線程上獲取項目。其中大部分都可以進行配置,但是訪問自己獲取的信息會更好。

2

NSArrayController和相關的類旨在用作現成的MVC設計控制器。因此,他們唯一的實際功能是將用戶界面與數據模型鏈接起來。如果您需要另外處理模型,您通常會以編程方式進行。

要以編程方式訪問模型,通常首先使用獲取請求(NSFetchRequest)來查找某些實體的相應實例。然後,您將遍歷實體關係以查找與獲取實體相關的實體的所有其他實例。

例如:假設您有一個計劃類型的應用程序。你的實體是日子和事件。每天有幾個活動,但每個活動只有一天。

如果您想檢查一週的事件,您可以獲取日期屬性感覺在7天範圍內的日期對象。然後,你會每天向對象詢問其相關事件。

iOS尚不支持綁定,因此請查看在此處使用Core Data的資源,以瞭解如何手動管理所有這些內容。

+0

這和其他答案都留下了關於我的提取請求的答案。 但是,問題仍然存在:我如何才能讓這些數據「創建」。例如,我有實體的日子和事件。我的應用程序如何知道他們將被關在某個MOC中?我如何用這些類型的新實體填充MOC?我是否會獲得免費設立的反向關係? 幸運的是沒有進行iOS開發,所以複雜性可以忽略 – Nektarios 2010-06-16 15:31:02

+1

你是否說你不知道如何綁定到提供的控制器的核心數據?如果是這樣,我會推薦Apple文檔中的核心數據編程指南開始。如果你不使用UI,你不會免費獲得很多東西。程序化訪問需要編程以及所有的細節。 – TechZen 2010-06-16 19:53:38

相關問題