Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 未在块内实例化的领域类_Ios_Parse Platform_Realm - Fatal编程技术网

Ios 未在块内实例化的领域类

Ios 未在块内实例化的领域类,ios,parse-platform,realm,Ios,Parse Platform,Realm,我正在查询解析端点News,然后尝试将返回的对象转换为RLMOBject子类object newobject,以便将它们保存到我的领域数据库中 问题是,我的数据被正确地提取并显示在tableview中,然而,newsObj并没有被创建!此外,它后面的NSLog语句永远不会执行 让这更奇特;每当我返回到上一个视图,然后重新访问这个视图时,newsObj就会被实例化,并且NSLog会正常执行 另一方面,尝试实例化defaultRealm也会产生类似的问题 下面是我在viewDidLoad中运行的完整

我正在查询解析端点News,然后尝试将返回的对象转换为RLMOBject子类object newobject,以便将它们保存到我的领域数据库中

问题是,我的数据被正确地提取并显示在tableview中,然而,newsObj并没有被创建!此外,它后面的NSLog语句永远不会执行

让这更奇特;每当我返回到上一个视图,然后重新访问这个视图时,newsObj就会被实例化,并且NSLog会正常执行

另一方面,尝试实例化defaultRealm也会产生类似的问题

下面是我在viewDidLoad中运行的完整代码的简化版

更新:

结果是发生了几个未抛出的错误

1不应在后台线程上创建/更新领域对象

2领域对象本身的任何错误都不会在此解析后台线程上抛出

我首先必须在主线程上分派creating NewsObject,然后出现了一个关于在RLMObject模型中使用NSNumber属性的错误。我解决了这些问题,并且解决了问题

下面是我的代码现在的样子

PFQuery *query = [PFQuery queryWithClassName:@"News"];

  [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {

     if (!error) {

          //--- Create RLMObject on Main Thread ---    
          dispatch_async(dispatch_get_main_queue(), ^{

                NewsObject *newsObj = [NewsObject new];
                NSLog(@"NewsObject Created");

                self.dataSourceArray = [NewsObject allObjects];
                [self.tableView reloadData];
          });   
      }
  }];

你试过调试它看发生了什么吗?当然!这是同样的行为。。。在NewsObject行之前设置断点,跨入或跨过该行,将正常恢复程序执行,就像第一次加载ViewController时该行不存在一样。返回,然后再次访问它,行现在正常执行…尝试将self.dataSourceArray赋值和[self.tableView reloadData]放在NSLog之后。试着把它发送到主管道thread@Priest堆栈跟踪左窗格中显示了什么?初始化领域时可能会引发异常,但解析正在捕获该异常,而不幸的是没有重新引发该异常。严格来说,解析使用的框架会捕获所有异常并忽略。如果在块外部和使用解析之前执行[RLMRealm defaultRealm],会发生什么?我认为异常是由领域抛出的。
PFQuery *query = [PFQuery queryWithClassName:@"News"];

  [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {

     if (!error) {

          //--- Create RLMObject on Main Thread ---    
          dispatch_async(dispatch_get_main_queue(), ^{

                NewsObject *newsObj = [NewsObject new];
                NSLog(@"NewsObject Created");

                self.dataSourceArray = [NewsObject allObjects];
                [self.tableView reloadData];
          });   
      }
  }];