以下显示了我已添加到NSManagedObject的子类以填充单个实体并将其添加到Core Data的方法。我有大约1000个对象要添加到数据库(我在循环中做,而不是如下所示的列表)我的问题是关于性能,是否逐个添加1000个对象中的每一个核心数据(我认为它确实如此)。有没有办法存储每个托管对象,并以单一(更快)的方式添加它们。
NSManagedObjectContext *context = [[self managedDocument] managedObjectContext];
[Atomal createAtomalInContext:context withName:@"H11" age:@57 andType:@"Nantar"];
[Atomal createAtomalInContext:context withName:@"H23" age:@22 andType:@"Nantar"];
[Atomal createAtomalInContext:context withName:@"H54" age:@11 andType:@"Nantar"];
[Atomal createAtomalInContext:context withName:@"H34" age:@98 andType:@"Nantar"];
[Atomal createAtomalInContext:context withName:@"H17" age:@35 andType:@"Nantar"];
+ (Atomal *)createAtomalInContext:(NSManagedObjectContext *)context withName:(NSString *)name age:(NSNumber *)age andType:(NSString *)type {
Atomal *atomal = nil;
atomal = [NSEntityDescription insertNewObjectForEntityForName:@"Atomal" inManagedObjectContext:context];
// POPULATE PROPERTIES
[atomal setName:name];
[atomal setAge:age];
[atomal setType:type];
NSLog(@"CORE: Adding >>> %@ %@ %@", [atomal name], [atomal age], [atomal type]);
return atomal;
}
答案 0 :(得分:4)
这应该没问题。如果你真的担心性能而且实际上你的实现存在问题,那么你应该分析并获得真正的结果,而不仅仅是征求意见。
说这应该相当便宜,因为所有托管对象都是在内存中创建的 - 当你调用save:
时,核心数据开始出现在磁盘上。击中磁盘的IO是缓慢的部分,因此如果你确保将其保持在最低限度,你应该没问题。
再次,你在这里做的更贵的事情之一是日志记录,这是IO输出到日志,如果你在紧密循环中进行大量日志记录,你可以真正注意到这种效果。