我想添加外部數據到SQLite /使用核心數據更新現有數據。EXC _ ???而執行executeFetchRequest
基本上,我從外部Web服務得到了一個JSON,並且我正在使用以下一段代碼來確定是否應該在數據庫中添加新的或更新現有對象。
NSFetchRequest *fetch = [[NSFetchRequest alloc] init];
[fetch setEntity:[NSEntityDescription entityForName:@"name" inManagedObjectContext:context]];
[fetch setPredicate:[NSPredicate predicateWithFormat:@"id = %@", [data valueForKey:@"key"]]];
NSArray *results = [context executeFetchRequest:fetch error:nil];
if (results.count == 1)
{
// update existing
}
else
{
// add new
}
的問題是:有時這種代碼會導致一個例外:
Thread 1: EXC_??? (11) (code=0, subcode=0x0)
異常在
提出如果我繼續我的應用程序的一切執行似乎確定。
我應該擔心這個異常嗎?
我的意思是有一種惱人的感覺,但更重要的是要知道原因是什麼,以及這種例外的後果是什麼?
一些額外的細節(以防萬一它是有關):
- 以上代碼獲取一個循環(約250萬次)執行多次。
- 代碼在主線程上運行(是的,我知道,但它是一種原型)。
- 上下文在主線程上創建。
- 外部數據在後臺線程中
[編輯]創建了一些更詳細地:
executeFetchRequest:error
返回初始化即使當異常被凸起的陣列。- 沒有錯誤集時我提供
error
參數executeFetchRequest:error
實際上是說'EXC _ ???'而不是' EXC_BAD_ACCESS'? – trojanfoe 2013-02-11 13:11:47
@trojanfoe是的,它實際上是說'EXC _ ???' – Bobrovsky 2013-02-11 13:12:53
只是一個瘋狂的猜測,但你是否正在初始化'results'數組? – jhilgert00 2013-02-11 13:19:39