菜鸟教程小白 发表于 2022-12-13 03:58:56

ios Coredata 大集合插入


                                            <p><p>嘿,我被同样的问题困扰了好几天,插入时间逐渐增加,在较低的 ipad 中,它也会因内存问题而崩溃。插入 20k 条记录需要 4-5 分钟。后台线程会提高效率吗? ?无论如何我可以优化这个。如果可以,请帮忙。</p>

<pre><code>+(BOOL) addObjectToProfessionalsDBWithDict:(NSArray*)profArray{

if (!(&gt;0 &amp;&amp; profArray )) {
    return NO;
}

NSManagedObjectContext *thisContext=;


for (int i=0; i&lt;; i++) {
NSManagedObject *professionalDBObject = [NSEntityDescription
    insertNewObjectForEntityForName:@&#34;ProfessionalsDB&#34;
                                          inManagedObjectContext:thisContext];//initWithDictionary:objectDict];      NSMutableDictionary * objectDict=;
forKey:@&#34;degree&#34;];

// and 10 morevalues

   if(i%500==0){
      NSError *error;
      NSLog(@&#34;saved rec nu %d&#34;,i);
      if (!) {
            NSLog(@&#34;Whoops, couldn&#39;t save: %@&#34;, );
            return NO;
      }
      else{
            NSLog(@&#34;data saved&#34;);

      }

         ;


   }

}



;
NSError *error;


if (!) {
    NSLog(@&#34;Whoops, couldn&#39;t save: %@&#34;, );
    return NO;
}

return YES;
</code></pre>

<p>}</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>存储 20k 条记录大约需要 4 分钟。我使用以下代码将其缩短到 8 秒(这真的很棘手!):</p>

<pre><code>+(NSManagedObjectContext*)getInsertContext{
NSManagedObjectContext *thisContext=[ init];
AppDelegate *delegate=(AppDelegate*)[ delegate];
NSPersistentStoreCoordinator *coordinator = ;
;
;

return thisContext;
</code></pre>

<p>}</p>

<p>我在此上下文中保存的每 1000 条记录,在保存重置后再次获取新上下文:</p>

<pre><code>    ;
      thisContext=;
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios Coredata 大集合插入,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/18550873/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/18550873/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios Coredata 大集合插入