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文件和它工作得很好。
這通常意味着您發送的網址不正確或不是正確的JSON數據。 –
你應該在'objc_exception_throw'上設置一個斷點(或者在Xcode中使用「異常斷點」的東西)並且告訴我們究竟在哪裏引發異常。我認爲這是對'JSONObjectWithData'的調用,'data'由於某種原因確實是零,但是讓我們確定。此外,您應該傳遞一個句柄作爲'JSONObjectWithData:options:error:'的第三個參數,如'&error'。現在你只是傳遞指針,而'JSONObjectWithData:options:error:'沒有辦法重新分配你本地的'error'變量來指出一個錯誤。 –
你有沒有試過設置一個斷點?如果你在解析JSON之前設置一個數據爲零? –