如何针对许多对象插入优化Core Data

时间:2011-11-11 15:11:34

标签: iphone ios core-data insert

我试图在内存存储中插入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;
}

对象彼此之间存在层次关系,就像树一样。

2 个答案:

答案 0 :(得分:0)

在使用Core Data进行任何导入之前,必要的读物是Core Data Programming Guide "Efficiently Importing Data".

它可能会为您节省大量时间,特别是如果导入是重复进行的话。

答案 1 :(得分:0)

如果在您的应用程序第一次运行时导入此数据,您可能希望查看使用种子数据库,这样您可以在开发期间执行一次缓慢导入,然后只需进行小型复制操作。< / p>

如果您的数据库非常大且空间非常宝贵,您可能需要寻找另一种解决方案,因为这可能会占用超出必要的磁盘空间(种子数据库将位于捆绑包和文档目录中)。