我有一個與核心數據相關的問題以及在爲某個實體創建NSManagedObject子類時自動創建的刪除對象函數。 我必須要實體;一個叫Label,有一個關係叫藝術家,另一個叫藝術家,有一個叫label的關係。藝術家關係目標是具有設置爲標籤的反比關係的實體藝術家。核心數據刪除對象函數
我添加了一些「藝術家」具有相同的名稱(弗裏基·澤基),我嘗試使用下一個代碼
NSError *error = nil;
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
// Grab the artist and delete
Artist *freekey = [fetchedObjects objectAtIndex:0];
[freekey.label remove ArtistsObject:freekey];
// Save everything
if([context save:&error])
{
NSLog(@"The save was successful!");
}
else
{
NSLog(@"The save wasn't successful: %@", [error localizedDescription]);
}
執行此代碼後刪除它們,我讀出的數據,但當我只有一個「Freekey Zekey」時,藝術家纔會被刪除。但是,當我再次運行應用程序時,fetchedObjects中的對象數量仍然是一個。如果我有一個以上的「Freekey Zekey」,我希望只有一個被刪除,但不會發生。
我嘗試使用此代碼刪除所有「弗裏基·澤基」
for(int i=0; i < [fetchedObjects count]; i++)
{
freekey = [fetchedObjects objectAtIndex:i];
[freekey.label remove ArtistsObject:freekey];
}
和它的作品,但是當我檢查對象的號碼fetchedObjects它不是0,我相信,是指物體避風港」沒有被刪除。
我該如何徹底刪除一個對象?
如果您將「標籤」關係的「刪除規則」設置爲「Nullify」,那麼您只需刪除Artists對象,它將自動從標籤中刪除。 – 2013-02-19 07:55:04
是的,這在很多常見的情況下都適用。但我更喜歡明確刪除關係,而不是等待CoreData處理其更改。我的意見更安全。思考。 – 2013-02-19 08:15:53
謝謝你的回覆。 您的代碼完美工作,我能夠更好地理解我應該如何從Core Data中移除對象。 – 2013-02-20 16:16:04