NSError:"Code=134060 Cannot fetch without an NSManagedObjectContext in scope" 解决方法
来源:互联网 发布:大数据商务拓展怎么做 编辑:程序博客网 时间:2024/05/01 03:59
在用一个NSFetchRequest 获取所有实体后,出现上面的错误.
贴出简要代码
/*- viewDidLoad:*/self.fetchTableDataRequest = [NSFetchRequest fetchRequestWithEntityName:@"Event"]; self.fetchTableDataRequest.predicate = [NSPredicate predicateWithValue:YES]; NSSortDescriptor *sortDes = [NSSortDescriptor sortDescriptorWithKey:@"timeStamp" ascending:YES selector:@selector(compare:)]; self.fetchTableDataRequest.sortDescriptors = @[sortDes]; self.fetchTableDataRequest.entity = [NSEntityDescription entityForName:self.fetchTableDataRequest.entityName inManagedObjectContext:self.managedObjectContext]; [self excuteRequest]; [self.tableView reloadData];/*- excuteRequest:*/- (void)excuteRequest { NSError *error; [self.managedObjectContext executeRequest:self.fetchTableDataRequest error:&error]; if (error) { NSLog(error.description); abort(); } [self.managedObjectContext performBlockAndWait:^{ }];// NSError *error; self.dataSourceArray = [[self.fetchTableDataRequest execute:&error] mutableCopy]; if (error) { NSLog(error.description); abort(); }}
注意到我用了两种方法来执行fetchRequest.原因是我看到文档中是这么说的
You use NSFetchRequest objects with the methods executeFetchRequest:error: and countForFetchRequest:error:, defined by NSManagedObjectContext.
并且NSFetchRequest本身有一个excute:方法,文档说这个方法会到和本线程(或者是queue,我没弄清楚)绑定的NSManagedContext获取实体.
后来看了一会文档,文档说要把某些操作上下文的代码放在performBlockAndWait:方法中(或者没有wait).这些操作会自动放到和context相关的线程去执行.因为Context创建时会指定ConcurrenceType.
只要把[self.fetchTableDataRequest execute:&error] 方法放到block里就不会报错了.
没有用[self.managedObjectContext executeRequest:self.fetchTableDataRequest error:&error];是因为这个方法返回的不是一个实体数组,而是一个ResultType,我看了下文档,没发现有其他的获取实体数组的属性方法.只有通过NSFetchRequest本身excute方法才能得到实体数组.
0 0
- NSError:"Code=134060 Cannot fetch without an NSManagedObjectContext in scope" 解决方法
- 解决问题:Cannot refer to the non-final local variable user defined in an enclosing scope
- Linux:Tomcat报错:java.lang.IllegalStateException: Cannot run without an instance id.解决方法
- NSError 错误code对照
- NSError 错误code对照
- NSError 错误code对照
- cannot simultaneously fetch multiple bags的解决方法
- cannot simultaneously fetch multiple bags 的解决方法
- 16-07-31 Cannot refer to the non-final local variable homePageInfo defined in an enclosing scope
- Cannot find bean in any scope
- Cannot find bean: "serivceList" in any scope
- Cannot find bean: "test" in any scope
- Cannot find bean userinfo in any scope
- Cannot find bean in any scope
- Cannot find bean: "EmpNumber" in any scope
- NSManagedObjectContext
- NSError 之 code 对照表
- Nserror code错误集绵
- const
- Java的clone方法
- WebService基础
- z-blog(ASP版) 彻底禁用 wap和pad 模式
- 【miscellaneous】视频浓缩摘要简介
- NSError:"Code=134060 Cannot fetch without an NSManagedObjectContext in scope" 解决方法
- UML---实现图---(构件图,部署图)
- PHP----文件操作5-----文件(文件夹)的创建和删除
- Java面试题系列(1):数据类型
- Servlet(三)--cookie
- 互联网后端基础设施
- 用UML准确的表达系统--细节
- LeetCode 343. Integer Break
- 大数据Spark “蘑菇云”行动第105课:Hive源码大师之路第三步:Hive序列化与反序列原理内幕和源码解析