2013-04-16 37 views
0

每次,当我保存我的NSManagedObjectContext时,它需要10秒或更多。向核心数据添加对象速度太慢

这里是我的代码:

dispatch_queue_t requestQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0); 
     dispatch_async(requestQueue, ^{ 
     NSManagedObjectContext *manageContext = [[NSManagedObjectContext alloc]init]; 
     [manageContext setPersistentStoreCoordinator:[[OKCoreManager sharedManager] persistentStoreCoordinator]]; 
     Card *cardObject = (Card *)[NSEntityDescription insertNewObjectForEntityForName:@"Card" inManagedObjectContext:manageContext]; 
     cardObject.name = self.name; 
     cardObject.title = self.title; 
     cardObject.email = self.email; 
     cardObject.address = self.address; 
     cardObject.stacks = self.stackObject; 
     cardObject.contact =self.contact; 
     NSError *error; 
     if (![[OKCoreManager sharedManager]saveManagedObjectContext:manageContext]) 
     { 
      NSLog(@"Problem saving: %@", [error localizedDescription]); 
      dispatch_sync(requestQueue, ^{ 
        iCallBack(FALSE,selfObject); 
      }); 
     } 
     else 
     { 
      dispatch_sync(requestQueue, ^{ 
         iCallBack(TRUE,selfObject); 
      }); 
     } 
     manageContext = nil; 
}); 
+2

请告诉我你不想要插入对象每次重新创建manageContext ... –

+0

@JeromeDiaz感谢您的努力。我自己解决了问题 – Anand

回答

0

整理出自己:

dispatch_queue_t requestQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0); 
    dispatch_async(requestQueue, ^{ 

     NSManagedObjectContext *manageContext = [[NSManagedObjectContext alloc]init]; 

     [manageContext setPersistentStoreCoordinator:[[OKCoreManager sharedManager] persistentStoreCoordinator]]; 

     Card *cardObject = (Card *)[NSEntityDescription insertNewObjectForEntityForName:@"Card" inManagedObjectContext:manageContext]; 

     cardObject.name = self.name; 
     cardObject.title = self.title; 
     cardObject.email = self.email; 
     cardObject.address = self.address; 
     cardObject.stacks = self.stackObject; 
     cardObject.contact =self.contact; 

    BOOL value = [[OKCoreManager sharedManager]saveManagedObjectContext:manageContext]; 
    dispatch_sync(dispatch_get_main_queue(), ^{ 
       iCallBack(value); 
      }); 
      manageContext = nil; 

    });