我正在尝试将外部数据添加到 SQLite / 使用 Core Data 更新现有数据。
基本上,我从外部 Web 服务获得了一个 JSON,我正在使用以下代码来确定是否应该在 DB 中添加新对象或更新现有对象。
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)
异常在NSManagedObjectContext executeFetchRequest:error:
如果我继续执行我的应用程序,一切似乎都很好。
我应该担心这个例外吗?
我的意思是拥有它有点烦人,但更重要的是要知道这个异常的原因和后果是什么?
一些额外的细节(以防万一):
- 上面的代码在一个循环中被执行多次(大约 25 万次)。
- 代码在主线程上运行(是的,我知道,但它是一种原型)。
- 上下文是在主线程上创建的。
- 外部数据在后台线程中创建
[编辑]更多细节:
executeFetchRequest:error
即使引发异常,也返回初始化数组。error
当我提供参数时没有设置错误executeFetchRequest:error