2012-07-05 154 views
0

我正在做一個涉及核心數據使用的項目。自從幾個月以來,我一直在使用它。我有一個小問題。我有兩個不同的實體,一個名爲Student,另一個名爲Courses。學生與課程之間的關係是一對多的關係。我經常從遠程json更新實體。所以,有時在課程實體中存在與學生實體沒有關係的懸掛指針。這種類型的實體需要被刪除。刪除這些對象怎麼樣更好?刪除核心數據實體

   Courses(points to student) <------------- Student ----------------> Course (Points to student) 
                  | 
                  | 
                  | 
                  | 
               Course (Points to student) 

         Course(has no pointer to student, no foreign key to relate with student) 

回答

1

是否確實需要刪除課程時它有沒有學生?雖然課程可能有效。我認爲你應該取消關係,所以當你刪除一個學生時,所有指向它的課程都會停止引用該學生。

您可能需要檢查您的relationship delete rules,以便我認爲它們應該是無效的。

+0

是的,在這種情況下,刪除課程似乎很奇怪。但是,我有一個相似類型的數據結構,其中刪除關係的實體將在表中存在懸掛列。 – Sandeep 2012-07-05 12:11:34

0

執行此操作的簡單方法是針對Courses創建提取請求和查詢。顯然,您需要使用NSPredicate刪除沒有學生的Courses

如果您的CoursesStudent相反,稱爲coursesToStudent,您可以設置以下謂詞。

[NSPredicate predicateWithFormat:@"coursesToStudent == nil"]; 

這裏我想這Courses有一到一個相對與Student

通過這種方式,沒有學生的情況下,獲取請求結果將有Courses。結果,請致電deleteObject,您已完成。

有關使用謂詞設置提取請求的信息,請參閱Filter NSFetchedResultsController for nil value?

關於您的模型我會設置另一個。例如使用三個實體:

Student 
Course 
Enroll 

其中

Student 
- attributes you want 
- toEnroll [one-to-many rel to Enroll with cascade rule] 

Course 
- attributes you want 
- toEnroll [one-to-many rel to Enroll with cascade rule] 

Enroll 
- attributes you want 
- toStudent [one-to-one rel to Student with nullify rule] 
- toCourse [one-to-one rel to Course with nullify rule] 

希望有所幫助。

相關問題