2

我有一個核心數據模型與多個實體之間沒有關係,每個實體對應於視圖控制器是用戶插入信息爲每個實體,例如:取多個實體與它們

輪胎(第一實體) - 類型(第一個屬性),成本(第二個屬性)。 玻璃(第二個實體) - 顏色(第一個屬性),大小(第二個屬性),成本(第三個屬性)。

對於每個實體我有一個帶文本框的MVC是用戶爲每個實體插入信息,所以如果您按下輪胎按鈕,則會爲其他實體插入輪胎類型,成本..等等。

一切都很順利,當我只拉一個實體,我插入信息的文本字段,然後按保存,它出現在我的tableview很好!但是,正如你所知道的,我希望其他實體插入到我的tableview和不同部分。

我試過用「cellForRowAtIndexPath」「messing」,也在我的「fetchedResultsController」方法中用「if's」和「swich's」但沒有成功。我在這裏錯過了什麼?!?!?!

謝謝,對不起我的英語。

回答

5

您需要一個實體來讓您的NSFetchedResultsController正常工作並利用其先進的內存和性能功能。

因此,修改您的數據模型並創建一個新實體,Item即其他實體的抽象父實體。 (您可以在模型編輯器中分配父實體。)確保所有項目(例如名稱)共享的屬性都屬於父項。這些應該是您想要在表格視圖中顯示的屬性。

現在你可以在你的NSFetchedResultsController添加NSStringNSNumber屬性type通過這個唯一的密鑰對每個子實體,輕鬆地排序。

從蘋果公司的[核心數據編程指南] [1]:

如果定義了實體繼承層次結構(見「實體繼承」),當您指定一個超級實體作爲一個獲取實體請求,請求返回超實體和子實體的所有匹配實例。在某些應用程序中,您可能指定超級實體爲抽象(請參閱「抽象實體」)。爲了獲取抽象實體的所有具體子實體的匹配實例,可以將用於提取規範的實體設置爲抽象實體。對於「抽象實體」中描述的域,如果您使用Graphic實體指定獲取請求,則獲取會返回Circle,TextArea和Line的匹配實例。

所以你獲取所有Items,排序type,然後對每個Cell您確定類型和相應的屬性填寫您的文本標籤。

+0

感謝您的回答Mundi !.讓我看看我是否理解,如果我錯了,請糾正我,你是說我應該只有一個實體擁有我以前在每個實體中想要的所有屬性?但如果(當在tableview中顯示單元格時)我想要將產品「輪胎」與「玻璃」區分開來呢?我怎麼能在cellForRowAtIndexPath?中的cell.textlabel.text和cell.detailtextabel.text中管理這個。謝謝。 – Japa

+0

擴大了我的答案。 – Mundi

+0

感謝您的幫助mundi,我要實現這一點。 – Japa

相關問題