您的位置:首页 > 其它

关于Core Data的一些整理(四)

2016-01-14 18:41 330 查看

关于Core Data的一些整理(四)

调用Core Data文件中的Request模板进行条件匹配



//获取ObjectModel相当于获取Core Date文件
NSManagedObjectModel *model = self.coreDataStack.contenxt.persistentStoreCoordinator.managedObjectModel;
self.fetchRequest = [model fetchRequestTemplateForName:@"FetchRequest"];
self.venues = [self.coreDataStack.contenxt executeFetchRequest:self.fetchRequest error:nil];


iOS8新增Asynchronous异步调用Core Data,提高性能

@property (nonatomic, strong) NSFetchRequest *fetchRequest;
@property (nonatomic, strong) NSAsynchronousFetchRequest *asyncFetchRequest;

//asyncFetch只是对普通request的封装
self.fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Venue"];
self.asyncFetchRequest = [[NSAsynchronousFetchRequest alloc] initWithFetchRequest:self.fetchRequest completionBlock:^(NSAsynchronousFetchResult * _Nonnull result) {
self.venues = result.finalResult;
[self.tableView reloadData];
}];
//注意调用的是executeRequest:方法
[self.coreDataStack.contenxt executeRequest:self.asyncFetchRequest error:nil];


iOS8新增批(Batch)处理,链接

Batch Updates或Batch Deletes与普通
NSFetchRequest
请求不同的是,他们都基于
NSPersistentStoreRequest
类,这是直接对底层的
NSPersistentStore
进行数据操作的请求,而不经过
NSManagedObjectContext
,因此避免将固态存储的数据转移到内存再处理的过程,因此效率大大提升。

//设置批处理请求,包含更新的内容,影响的stores
NSBatchUpdateRequest *batchUpdate = [NSBatchUpdateRequest batchUpdateRequestWithEntityName:@"Venue"];
batchUpdate.propertiesToUpdate = @{@"favorite":@YES};
batchUpdate.affectedStores = self.coreDataStack.contenxt.persistentStoreCoordinator.persistentStores;
batchUpdate.resultType = NSUpdatedObjectsCountResultType;//返回更新的行数

NSBatchUpdateResult *batchResult = [self.coreDataStack.contenxt executeRequest:batchUpdate error:nil];
NSLog(@"%@", batchResult.result);
//在iOS9中又新增
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: