2011-12-21 97 views
0

在JSON解析,保存解析數據到的NSDictionary, 還要讀key-value這樣的:如何在iOS中捕獲異常?

NSString *verCode = [JSONDict objectForKey:@"v"]; 

但有時,該鍵值被其他格式,程序會崩潰,所以我需要隱蔽到stringValue的;
這樣的:

NSString *verCode = [[JSONDict objectForKey:@"v"] stringValue]; 

我如何能趕上例外的iOS程序?

回答

4

您可以使用@try {}代碼來捕獲異常。

在你的情況雖然較好的方法是看類型數組的一個關鍵中的對象和使用權的轉換需要:

id object = [myJSONDict objectForKey:@"theValue"]; 

NSString *finalVal = nil; 

if ([object isKindOfClass:[NSNumber class]]) 
    finalVal = [object stringValue] 
else 
    finalVal = object; 
+1

同意。 JSON解析是顯式檢查返回對象的類的幾個地方之一。 – 2011-12-21 03:55:54

+0

它可以是NSNumber旁邊的另一個嗎?那你怎麼處理呢? – user523234 2011-12-21 11:11:10

+1

JSON解析器只會爲值返回NSString和NSNumber - 或者有時候NSNull會令人討厭(在這種情況下,您應該將變量設置爲零或0)。沒有真正的JSON日期標準,所以你不會得到一個NSDate。你當然也可以找回字典和數組,但這些是子集合,而不是最終值... – 2011-12-21 22:53:16