2013-09-27 43 views
4

核心數據讓我感到緊張。我正在刪除舊數據並希望插入從服務器接收的新數據。[NSManagedObjectContext delete:]:無法識別的選擇器發送到實例

現在刪除部給人以 「SIGABORT」:

- [刪除的NSManagedObjectContext:]:無法識別的選擇發送到實例0x522f550 2013-09-27 14:05:56.592 *終止應用程序由於未捕獲的異常 'NSInvalidArgumentException',原因是: ' - [刪除的NSManagedObjectContext:]:無法識別的選擇發送到實例0x522f550' *第一擲調用堆棧: (0x320f82a3 0x39d4797f 0x320fbe07 0x320fa531 0x32051f68 0x1b6c53 0x1868e5 0x3a15f11f 0x3a16d259 0x3a16d3b9 0x3a193a11 0x3a1938a4) 的libC++ abi.dylib:終止調用thr由於一個異常

刪除發生在背景和NSManagedObjectContext中是一個女貞併發類型 我打印的上下文和對象上下文指針

PO上下文的NSManagedObjectContext:0x522f550

po tmpCon.managedObjectContext NSManag edObjectContext:0x522f550>

和刪除代碼是:

 NSError *errorAllCons = nil; 
    NSFetchRequest *allevents = [[NSFetchRequest alloc] init]; 
    [allevents setEntity:[NSEntityDescription entityForName:@"TEventContact" inManagedObjectContext:context]]; 
    NSArray *allCons = [context executeFetchRequest:allevents error:&errorAllCons]; 
    for (TEventContact *tmpCon in allCons) 
    { 
     [context delete:tmpCon]; 
    } 

和崩潰的[context delete:tmpCon]; 有人可以讓我知道我做錯了什麼?

+1

「NSManagedObjectContext」沒有'delete: '方法,也許['deleteObject:'](https://developer.apple.com/library/ios/documentation/Cocoa/Reference/CoreDataFramework/Classes/NSManagedObjectContext_Class/NSManagedObjectContext.html#//apple_ref/occ/instm/NSManagedObjectContext/DeleteObject的:) – pNre

回答

24

使用

[context deleteObject:tmpCon]; 

它會解決這個問題

2

像這樣做了刪除對象永久

for (TEventContact *tmpCon in allCons) 
{ 
    [context deleteObject:tmpCon] /// for deleting object in context 
}  
[context save]; /// to reflect changes in database you need to save that context 

不保存上下文中,它不會對數據庫反映和這可能會導致另一個上下文的DIRTY_READ

相關問題