2012-09-22 69 views
1

我的模型有2個實體(類別和新聞)與多對多關係:(這意味着一個類別可能有很多新聞和新聞文章可能屬於一個或多個類別)。從上下文中刪除nsmanagedboject與多對多關係核心數據iOS

下面是我的設計:

  • 實體1:

類別(屬性:的categoryID,標題,顯示,位置)與新聞實體的關係稱爲「新聞」。

「新聞」關係的目的地是「新聞」,反向關係是「類別」,類型對多關係和刪除規則是級聯的。

  • 實體2:

新聞(屬性:NewSID的,報價,內容,鏈接)與分類實體的關係稱爲 「類」。

「類別」關係有目的地是「類別」,反向關係是「新聞」,類型對多關係,刪除規則無效。

對象圖這個樣子的:

新聞< < -------------- >>類別

我的問題是:

1>我的設計模型好嗎?

2> Arcoding到我的設計的模型中,如果我從它刪除新聞對象上下文例如像:

ID newsObjectToDelete = .... [managedObjectContext DeleteObject的:newsObjectToDelete];

NewsObjectToDelete屬於的Category對象是否自動從關係「News」的NSSet中移除newsObjectToDelete。

3>如果我想約束一個「新聞」必須屬於至少一個「類別」。如何實施該限制

提前致謝。對不起,對不起英語

回答

1
  1. 很難說這是否適合您的應用程序,但它看起來像一個非常標準的關係。

  2. 如果您刪除了一個對象,它將自動從所有核心數據關係中刪除。不要擔心對某些已刪除對象的懸掛引用,Core Data會爲您處理這些對象。

  3. 核心數據實際上只能生成一個錯誤(並阻止保存)或在保存期間採取一些自動操作。您可以執行下列操作之一:

    • 在數據模型中:使用數據模型編輯器,取消這種關係「可選」,和/或設置「最低」數到1:

      Core Data 'Data Model Inspector' Screenshot

    • 在你的「新聞」子類:如果您需要更細粒度的控制和/或錯誤報告,您可以在validation檢查這個(產生錯誤),或可能採取一些自動操作during the save process

    注意,使用驗證(無論是在模型或代碼)只會在開發和調試流程,以幫助 - 呼籲管理對象上下文-save:會失敗,返回NO並生成錯誤。這應該是最後的手段,並且只是爲了防止不良數據進入您的持久存儲。像這樣的驗證失敗告訴你,你的代碼的一些其他部分是錯誤的,併產生不好的對象。

+0

:謝謝!這真的很有用:D –