无法从解析的数据中提取值

时间:2015-04-03 00:08:32

标签: ios objective-c json

我是初学者,正在尝试Json解析。我正在成功解析我需要的数据。但问题是我不知道如何在另一个函数中保存和使用该值。

现在,为了简单起见,我正在查看controller.m中的所有内容。意思是我的所有代码都在viewcontroller.m中 稍后会使用一个单独的类。

我的故事板上有一个按钮和一个标签。所以我试图从Json .api中获取一个值,并希望在标签中显示该值。当用户按下按钮时,将触发解析。你可以在下面。

- (IBAction)btnPressed:(id)sender {

    NSURL *url=[NSURL URLWithString:@"http:........myweb"];
    NSURLRequest *request=[NSURLRequest requestWithURL:url];

    connection=[NSURLConnection connectionWithRequest:request delegate:self];

    if(connection)
    {
        webData=[[NSMutableData alloc]init];
        self.outputLbl.text = [NSString stringWithFormat:@"%@", goldRate];
    }

但标签中打印的值为null。当我们获取信息并在tableviews中显示时,我们设置了委托。但对于标签,我们不设置委托。所以我很困惑这个问题是什么?我忘记设置代表或我错误地传递数据。请参考下面的功能。

-(void) connectionDidFinishLoading:(NSURLConnection *)connection{

    NSDictionary *allDataDictionary=[NSJSONSerialization JSONObjectWithData:webData options:0 error:nil];
    NSArray *myDataArray=[allDataDictionary objectForKey:@"data"];
    NSArray *myGoldArray=[myDataArray objectAtIndex:0];
    goldRate=[[myGoldArray objectAtIndex:1] stringValue];

}

我把这个goldRate变成了一个全局变量。但是当我调试我的程序时。在connectionDidFinishLoading中,goldRate值绝对是我想要的。但是当我尝试在btnPressed函数中使用这个goldRate时,在该函数中该值为null。

请帮忙。

1 个答案:

答案 0 :(得分:0)

按下按钮时,您将启动加载。当加载完成(稍后一段时间)时,将调用connectionDidFinishLoading:方法。但在此之前,“goldRate”将为零(因为它尚未初始化)。

在connectionDidFinishLoading中设置标签:而不是您拥有的标签,并显示该值。

相关问题