關於Core Data的一些整理(四)

關於Core Data的一些整理(四)

  • 調用Core Data文件中的Request模板進行條件匹配

 

1 //獲取ObjectModel至關於獲取Core Date文件
2   NSManagedObjectModel *model = self.coreDataStack.contenxt.persistentStoreCoordinator.managedObjectModel;
3   self.fetchRequest = [model fetchRequestTemplateForName:@"FetchRequest"];
4   self.venues = [self.coreDataStack.contenxt executeFetchRequest:self.fetchRequest error:nil];
  • iOS8新增Asynchronous異步調用Core Data,提升性能

 

 1 @property (nonatomic, strong) NSFetchRequest *fetchRequest;
 2 @property (nonatomic, strong) NSAsynchronousFetchRequest *asyncFetchRequest;
 3 
 4   //asyncFetch只是對普通request的封裝
 5   self.fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Venue"];
 6   self.asyncFetchRequest = [[NSAsynchronousFetchRequest alloc] initWithFetchRequest:self.fetchRequest completionBlock:^(NSAsynchronousFetchResult * _Nonnull result) {
 7     self.venues = result.finalResult;
 8     [self.tableView reloadData];
 9   }];
10   //注意調用的是executeRequest:方法
11   [self.coreDataStack.contenxt executeRequest:self.asyncFetchRequest error:nil];
  • iOS8新增批(Batch)處理,連接

Batch Updates或Batch Deletes與普通NSFetchRequest請求不一樣的是,他們都基於NSPersistentStoreRequest類,這是直接對底層的NSPersistentStore進行數據操做的請求,而不通過NSManagedObjectContext,所以避免將固態存儲的數據轉移到內存再處理的過程,所以效率大大提高。異步

1 //設置批處理請求,包含更新的內容,影響的stores
2   NSBatchUpdateRequest *batchUpdate = [NSBatchUpdateRequest batchUpdateRequestWithEntityName:@"Venue"];
3   batchUpdate.propertiesToUpdate = @{@"favorite":@YES};
4   batchUpdate.affectedStores = self.coreDataStack.contenxt.persistentStoreCoordinator.persistentStores;
5   batchUpdate.resultType = NSUpdatedObjectsCountResultType;//返回更新的行數
6   
7   NSBatchUpdateResult *batchResult = [self.coreDataStack.contenxt executeRequest:batchUpdate error:nil];
8   NSLog(@"%@", batchResult.result);
9   //在iOS9中又新增
相關文章
相關標籤/搜索