2013-04-03 21 views
0

每次我嘗試解析我的JSON文件我在控制檯收到此錯誤:
「NSInvalidArgumentException」的,理由是:「數據參數是零」
人們都在說這事做的URL和特殊字符,但它看起來像這樣:
http://data.myurl.com/api/49/WELOG/KRF/ticker 任何想法?
'NSInvalidArgumentException',原因:'數據參數爲零'不是我的網址? - 目標C

我的代碼:

#define kBgQueue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) 
#define kLatestURL [NSURL URLWithString:@"http://data.myurl.com/api/49/WELOG/KRF/ticker"] 

#import "ticker.h" 

@implementation ticker 

-(void) startTicker{ 
    dispatch_async(kBgQueue, ^{ 

     NSData * data = [NSData dataWithContentsOfURL:kLatestURL]; 
     [self performSelectorOnMainThread:@selector(ticker:) withObject:data waitUntilDone:YES]; 
    }); 

} 
-(void) ticker:(NSData *) data{ 

    NSError * error; 
    NSDictionary * json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:error]; 

    NSArray * latestPrice = [json objectForKey:@"data"]; // under adult data 
    NSNumber * value = [(NSDictionary*)[latestPrice objectForKey:@"last_all_numbers"] 
                  objectForKey:@"display"]; 
} 

它的工作就好了前面......我可以訪問在Web瀏覽器的JSON文件和它工作得很好。

+0

這通常意味着您發送的網址不正確或不是正確的JSON數據。 –

+0

你應該在'objc_exception_throw'上設置一個斷點(或者在Xcode中使用「異常斷點」的東西)並且告訴我們究竟在哪裏引發異常。我認爲這是對'JSONObjectWithData'的調用,'data'由於某種原因確實是零,但是讓我們確定。此外,您應該傳遞一個句柄作爲'JSONObjectWithData:options:error:'的第三個參數,如'&error'。現在你只是傳遞指針,而'JSONObjectWithData:options:error:'沒有辦法重新分配你本地的'error'變量來指出一個錯誤。 –

+0

你有沒有試過設置一個斷點?如果你在解析JSON之前設置一個數據爲零? –

回答

0

當我打開kLatestURL時,我看到了Failed to load page content消息。所以你的JSON不在這個URL。也許是因爲某個到期日期。將您的JSON上傳到其他地方,然後重試。

相關問題