2011-12-21 61 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