2011-11-11 43 views
0

我试图插入CoreData约400对象在内存存储,但它是长。大约20-30秒。这是正常的吗?可能存在许多插入的特殊情况?如何优化核心数据对很多物体插入

- (MyObject*) insertNew 
{ 
    NSEntityDescription* entityDescr = [MyObject entityDescription]; 
    NSManagedObjectContext* ctx = [NSManagedObjectContext defaultContext]; 
    MyObject* obj = [[[MyObject alloc] initWithEntity:entityDescr 
     insertIntoManagedObjectContext:ctx] autorelease]; 
    obj.name = @"name"; 
    obj.Id = @"an ID"; 
    return obj; 
} 

这些对象之间存在层次关系,如树。

+0

你打电话400次节省您的管理对象上下文(在一个循环中的每个对象实例后),或者你只是调用保存一次? –

+0

您可以发布您插入代码?这当然看起来很慢。 – kubi

+0

@ BP。一次完成插入 – esmirnov

回答

0

如果此数据将被导入您的应用程序运行时,您可能想看看使用种子数据库的第一次,你可以在开发过程中进行一次慢进口这种方式,那么它只是一个小的复制操作的问题。

如果你的数据库是非常大的,空间是你可能想看看另一种解决办法,因为这可以用比必要更多的磁盘空间(种子数据库将在包和文件目录)的溢价。