2011-11-11 41 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

如果此數據將被導入您的應用程序運行時,您可能想看看使用種子數據庫的第一次,你可以在開發過程中進行一次慢進口這種方式,那麼它只是一個小的複製操作的問題。

如果你的數據庫是非常大的,空間是你可能想看看另一種解決辦法,因爲這可以用比必要更多的磁盤空間(種子數據庫將在包和文件目錄)的溢價。