我想測試一下使用靜態庫,和我調用此方法(這是在靜態庫)iOS設備的靜態庫解析JSON返回null
-(NSMutableDictionary *)parseJSONfromURL:(NSURL *)url{
__strong NSMutableDictionary *json;
[self.delegate isParsing:(url != nil)];
if (url == nil) {
[NSException raise:NSArgumentDomain format:@"The passed url argument cannot be nil"];
}
NSError *err;
json = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfURL:url] options:NSJSONReadingMutableLeaves error:&err];
if (err) {
[json setObject:err forKey:@"error"];
}
while (json == nil) {
NSLog(@"waiting...");
}
[self.delegate isParsing:NO];
[self.delegate didFinishParsing:(json != nil)];
return json;
}
我期望while
循環中無限自json返回null
,但代表方法didFinishParsing
被髮送,這意味着它不是null
。 像這樣(ACParser是在圖書館一類)
ACParser *p = [[ACParser alloc] initWithDelegate:self];
dictionary = [p parseJSONfromURL:[NSURL URLWithString:@"http://www.a-cstudios.com/text.json"]];
字典聲明如下
__strong NSMutableDictionary *dictionary;
該網址JSON很簡單
{
"text" : "testing"
}
然而,每一次這稱爲代表方法didFinishParsing:
,記錄dictionary
返回(null)
。我在這裏做錯了什麼?是因爲我從靜態庫調用它嗎?
是不是有一個無限循環中的代碼,如果'JSON == nil'? – sapi
這就是我期待的事情,這就是爲什麼我把它放在那裏,但它發回的東西,它只是不包含任何東西。 –
好吧,它只會發送一個'bool'('didFinishParsing:'用布爾表達式調用,而不是json本身) – sapi