我正在使用核心数据创建大约1800条记录。我真的没有将值插入核心数据的问题,但是当我尝试更新现有值时,它需要很长时间。这就是我的做法:
b
答案 0 :(得分:1)
您正在数组setValue:forKey:
上调用Sales
。这会自动在数组的每个成员上调用该方法。来自documentation:
使用指定的值和键在每个数组的项目上调用setValue:forKey:。
但是你已经将它包裹在一个for循环中,重复它~1800次。删除for循环,或直接在数组的每个成员上调用setValue:forKey:
,例如
[Sales[i] setValue:value1 forKey:@"value1"];
如果您执行后者,请将保存移到for循环之外,这样上下文会在结尾处保存一次,而不是在每个项目之后保存。
所以:
[Sales setValue:value1 forKey:@"value1"];
[Sales setValue:value2 forKey:@"value2"];
[Sales setValue:value3 forKey:@"value3"];
[Sales setValue:value4 forKey:@"value4"];
[Sales setValue:value5 forKey:@"value5"];
[context save:nil];
或
for (int i = 0; i<Sales.count; i++)
{
[Sales[i] setValue:value1 forKey:@"value1"];
[Sales[i] setValue:value2 forKey:@"value2"];
[Sales[i] setValue:value3 forKey:@"value3"];
[Sales[i] setValue:value4 forKey:@"value4"];
[Sales[i] setValue:value5 forKey:@"value5"];
}
[context save:nil];