2015-04-03 114 views
-1

我對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]; 
    } 

但標籤上打印的值爲空。當我們獲取信息並在桌面視圖中顯示時,我們設置了代表。但對於一個標籤我們不設置委託。所以我很困惑問題是什麼?我忘了設置一個委託或我錯誤地傳遞數據。請點擊下面的功能。

-(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。

請幫忙。

回答

0

當按下按鈕,您啓動負載。加載完成後(一段時間後),調用connectionDidFinishLoading:方法。但在此之前,「goldRate」將爲零(因爲它尚未初始化)。

坐落在connectionDidFinishLoading標籤:不是,你擁有它,和值將出現。

+0

感謝,做的工作。但是有沒有一種方法可以將此值從connectionDidFinishLoading傳遞到我的代碼中的另一個方法/函數?因爲如果我嘗試通過從connectionDidFinishLoading調用將值傳遞給另一個函數,它不會保存該值。 – 2015-04-03 00:26:29

+0

你可以使它成爲一個成員變量 – 2015-04-03 14:12:56