2014-03-27 46 views
0

我在App Store上有一個現有的應用程序,突然發現了一些與iOS7.1更新相關的問題。這是我無法擺脫我的頭,雖然它應該(它過去)工作。我試圖檢查JSON字符串的「成功」鍵是否等於'1'。比較在iOS7.1上破壞的JSON數據

AFJSONRequestOperation *op = [AFJSONRequestOperation JSONRequestOperationWithRequest:req success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { 
    [[AFNetworkActivityIndicatorManager sharedManager] decrementActivityCount]; 
    if ([[JSON objectForKey:@"Success"] isEqualToValue:[NSNumber numberWithInt:1]]) { 
     // succeeded 
     NSLog(@"Reached success while submitting"); 

    } else { 
     NSLog(@"JSON: %@", [JSON objectForKey:@"Success"]); 
     // Success was not 0 
    } 
}failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { 
    // parse/download error 
}]; 

程序總是達到else聲明,即使成功的關鍵是1.這裏是JSON對象的調試打印:

Printing description of JSON: 
{ 
    EntryId = 5235; 
    EntryLink = "https://cpdme.wufoo.com/api/v3/forms/z7x4a9/entries.json?Filter1=EntryId+Is_equal_to+5235"; 
    Success = 1; 
} 
+1

請打印解析的實際數據。可能是服務器正在爲EntryId和Success發送字符串;不幸的是,當你打印解析的字典時你看不到這個。或者檢查[[JSON objectForKey:@「Success」是KindOfClass:[NSNumber類]]還是[NSString類]。 – gnasher729

+0

當然,印刷的說明顯示了這一點?如果他們是字符串,他們會被包裹在雙引號中,比如'EntryLink'是? –

+0

查看關於@ Wain的答案的評論 - 兩個類都是相同類型('NSNumber') –

回答

1

考慮更改代碼:

NSNumber *statusValue = [JSON objectForKey:@"Success"]; 

if ([statusValue boolValue]) { 
    ... 

,因爲這具有更廣泛的範圍來正確識別真相。它也會悄悄地處理作爲字符串實例的值。

我想你的當前代碼在比較過程中遭受類類型不匹配。記錄[JSON objectForKey:@"Success"][NSNumber numberWithInt:1]的課程和內容以驗證結果。

+0

嗨Wain,類的輸出是:JSON成功關鍵類:'__NSCFNumber' 編號類:'__NSCFNumber' –

+0

看起來合理。編輯代碼是否給出了正確的結果? – Wain

+0

剛剛嘗試過 - 它的確如此,謝謝!瘋狂,它只改變了iOS7.1 –