我有一个异步下载JSON文件的应用程序,然后它应该在Core Data中插入这些对象以进行持久存储。关于插入,从主线程做到这一点是个好主意吗?如果有数千个物体怎么办?我应该在不同的线程上进行插入吗?你能否就此事向我提供一些片段?关于在保存对象后获取对象,我是否还应该使用不同的线程?
我插入核心数据的代码是:
- (void) insertObjects:(NSArray*)objects ofEntity:(NSString *)entityName
{
NSString *key;
NSManagedObject *managedObject;
NSError *error;
for(NSDictionary *dict in objects){
managedObject = [NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:_managedObjectContext];
for(key in dict){
[managedObject setValue:dict[key] forKey:key];
}
}
[_managedObjectContext save:&error];
}
PS:对象属于同一个实体。该项目在iOS 7.0或更高版本上运行。
答案 0 :(得分:0)
因为我还不能评论..
您打算支持哪些iOS版本?如果为5或更高,这可能会有助Concurrency stack
链接摘要:
您创建了一个私有concurreny类型的上下文来访问您的物理数据
基于此,您可以创建主要的concurreny类型
除此之外,您再次使用私有并发类型存储。
不要忘记保存在每个商店,否则,数据似乎在应用程序运行时保存,但重启后它会丢失。
是的,你想要做一个额外的线程,因为如果有很多项目,它会阻止UI。