加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – NSURLSessionDataTask不执行完成处理程序块

发布时间:2020-12-16 06:45:03 所属栏目:百科 来源:网络整理
导读:我试图从我的本地节点服务器拉一些数据.服务器正在获取获取请求并记录它,但由于某种原因,我的iOS应用程序将不会执行任何我在完成处理程序中的代码.这是代码: - (IBAction) buttonPressed{NSURL *url = [NSURL URLWithString:@"http://127.0.0.1:3000/"];NSU
我试图从我的本地节点服务器拉一些数据.服务器正在获取获取请求并记录它,但由于某种原因,我的iOS应用程序将不会执行任何我在完成处理程序中的代码.这是代码:
- (IBAction) buttonPressed{
NSURL *url = [NSURL URLWithString:@"http://127.0.0.1:3000/"];
NSURLSessionDataTask *dataTask =
[self.session dataTaskWithURL:url
          completionHandler:^(NSData *data,NSURLResponse *response,NSError *error){
              nameLabel.text = @"yay!";
              /*
              if (!error){
                  nameLabel.text = @"noerr";
                  NSHTTPURLResponse *httpResp = (NSHTTPURLResponse *)response;
                  if (httpResp.statusCode == 200){
                      NSError *jsonErr;

                      NSDictionary *usersJSON =
                      [NSJSONSerialization JSONObjectWithData:data
                                                      options:NSJSONReadingAllowFragments
                                                        error:&jsonErr];

                      if (!jsonErr){
                         // nameLabel.text = usersJSON[@"username"];
                          nameLabel.text = @"nojerr";

                      }
                      else{
                          nameLabel.text = @"jsonErr";
                      }
                  }
              }
              else{
                  nameLabel.text = @"Err";
              }
               */
          }];
[dataTask resume];

}

当程序运行时,nameLabel不会更改为“yay”.但是,如果我尝试在NSURLSessionDataTask行之前更改nameLabel,它会发生更改.

解决方法

NSURLSessionDataTask在后台线程中运行.要更新用户界面中的任何内容,例如标签,按钮,表视图等,您必须在主线程上执行此操作.如果要从completionHandler块更新标签文本,则需要更新主线程中的标签,如下所示:
dispatch_sync(dispatch_get_main_queue(),^{
  nameLabel.text = @"yay!";
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读