我有一個基於NSInMemoryStoreType
存儲的核心數據堆棧。而且我注意到,刪除對象並不能真正刪除它們或使它們成爲零,而只是簡單地將它們變成錯誤。從內存中刪除核心數據對象將它們轉換成錯誤但不會將它們擦除
例如,(MyManagedObjectEntityClass以及所述<>標識符是佔位符):
MyManagedObjectEntityClass *o = [NSEntityDescription insertNewObjectForEntityForName:@"<MyManagedObjectEntityClass Entity Name>" inManagedObjectContext:self.localContext];
NSLog(@"\n%@", o);
[self.localContext deleteObject:o];
NSLog(@"\n%@", o);
將記錄該對象是仍然存在只有它的數據是一個故障。
並且加入[self.localContext save:nil];
之後刪除也沒有改變這個。
我希望我可以在某些時候測試o
變量nil
,在這種情況下,我會重新加載對象 - 但似乎我不能。
以防萬一,是的,我知道我可以代替o
爲-isFault
。但事情是,推測這個測試到一個NSSet,我不能只依靠[[set anyObject] isFault]
得出結論,該集合中的所有對象已被刪除(理想情況下,該集的計數將爲0,但所有對象仍然存在故障)。
所以我想知道是否有可能,或者我可以採取什麼替代方法來測試對象已被刪除的方式是透明的,他們是管理對象。
您是否嘗試過使用'[o isDeleted]'進行測試? – 2013-05-09 05:56:58
事情是這樣讓我和isFault在同一條船上。對象本身從上下文中刪除。如果我在刪除後執行提取請求,則上下文不返回任何匹配。問題在於,對於保存在客戶端代碼中的對象的任何引用(例如視圖控制器中的NSArray,例如,持有一堆託管對象)在刪除後仍然在集合中,即使它們是故障,它們仍然是對象我測試nil或測試集合的數量。 – SaldaVonSchwartz 2013-05-09 10:27:07
這可能是我試圖使用託管對象的方式超出了核心數據的範圍。我在想也許是寫一個類或者繼承這些集合,讓它們知道託管對象,但它可能是超效率的。 – SaldaVonSchwartz 2013-05-09 10:28:01