Ios 未在块内实例化的领域类
我正在查询解析端点News,然后尝试将返回的对象转换为RLMOBject子类object newobject,以便将它们保存到我的领域数据库中 问题是,我的数据被正确地提取并显示在tableview中,然而,newsObj并没有被创建!此外,它后面的NSLog语句永远不会执行 让这更奇特;每当我返回到上一个视图,然后重新访问这个视图时,newsObj就会被实例化,并且NSLog会正常执行 另一方面,尝试实例化defaultRealm也会产生类似的问题 下面是我在viewDidLoad中运行的完整代码的简化版 更新: 结果是发生了几个未抛出的错误 1不应在后台线程上创建/更新领域对象 2领域对象本身的任何错误都不会在此解析后台线程上抛出 我首先必须在主线程上分派creating NewsObject,然后出现了一个关于在RLMObject模型中使用NSNumber属性的错误。我解决了这些问题,并且解决了问题 下面是我的代码现在的样子Ios 未在块内实例化的领域类,ios,parse-platform,realm,Ios,Parse Platform,Realm,我正在查询解析端点News,然后尝试将返回的对象转换为RLMOBject子类object newobject,以便将它们保存到我的领域数据库中 问题是,我的数据被正确地提取并显示在tableview中,然而,newsObj并没有被创建!此外,它后面的NSLog语句永远不会执行 让这更奇特;每当我返回到上一个视图,然后重新访问这个视图时,newsObj就会被实例化,并且NSLog会正常执行 另一方面,尝试实例化defaultRealm也会产生类似的问题 下面是我在viewDidLoad中运行的完整
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];
});
}
}];