2013-12-11 143 views
6

我正在尋找使用Core數據執行一些簡單的刪除操作,但只需要一點建議就可以了。在覈心數據中刪除與級聯的關係對象

我有一個模型與交易,名稱,事件和日期實體。該交易有一個鏈接到每個其他實體。

在應用程序中,當用戶將信息添加到文本字段時,該信息被保存到4選項卡表視圖控制器。

第一個選項卡使用NSFetchedResultController並在事務實體上使用fetchRequest。第二個選項卡使用名稱實體,第三個使用事件,第四個使用日期實體。

如果我從「事務」選項卡中刪除一個條目,它會刪除那個有意義的事務。

我想要的是能夠從名稱選項卡或事件選項卡中刪除一個人,並通過應用程序的模型級聯。因此,如果鮑勃有多個交易,刪除他的交易標籤將刪除該交易。

如果我從名稱選項卡中刪除BOB,它應該刪除他與每個日期和事務關聯的每個事件。

這同樣適用於事件和日期。

編輯:更新,包括數據模型

注:年實體處於實驗階段,目前未使用 enter image description here 我怎麼會去這樣做這樣的事情?

感謝

+0

這將有助於您發佈Core Data模型的截圖。 –

+0

謝謝馬丁 - 更新的問題,包括模型 – amitsbajaj

回答

8

如果設置了「刪除規則」從PersonTransaction了「交易」關係「瀑布」,然後刪除的人會自動刪除所有 關聯交易。

+0

我認爲他知道... – Mundi

+1

有了這個配置刪除所有人的交易而不刪除人呢?將交易設置爲「零」還是清空就足夠了? – Rivera

+1

@Rivera:否。「刪除規則」僅適用於對象被*刪除*的情況。 –

0

首先,我看不到將日期抽象成實體的智慧。也許你可以啓發我。在我看來,這個日期屬於交易。在日期選項卡上,您仍然必須提取交易,但將它們分組並按不同方式排序。

我想你知道如何讓你的人與交易關係級聯。這將刪除與某人關聯的所有交易。事件也是如此。

然而,在另一個方向上級聯會產生更多問題。您必須以某種方式檢查它是否爲最後一個成員之間的多對多關係,並且只有在它刪除時纔會刪除它。一種方法是重寫setter。在您生成的NSManagedObject子類中,您可以找到自動生成的setter,包括用於從集合中添加或刪除對象的setter(即多對多關係)。

-(void)removeTransactionsObject:(Transaction *)value { 
    [super removeTransactionsObject:value]; 
    if (!self.transactions.count) { 
     [self.managedObjectContext deleteObject:self]; 
    } 
} 
相關問題