我有一些看起来像这样的代码:
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:data
options:kNilOptions
error:&error];
NSArray *arrRequests = [NSJSONSerialization JSONObjectWithData:data
options:NSJSONReadingMutableContainers
error:nil];
// Loop through the array and generate the necessary annotation views
for (int i = 0; i<= arrRequests.count - 1; i++)
{
//now let's dig out each and every json object
NSDictionary *dict = [arrRequests objectAtIndex:i];
NSString *is_private = [NSString
stringWithString:[dict objectForKey:@"is_private"]];
...
当is_private的值为1或0时,它可以工作,但如果它为null,则会在此行上出现异常崩溃:
NSString *is_private = [NSString stringWithString:[dict objectForKey:@"is_private"]];
有没有办法检查它是否为空或处理它,以便能够将nil放入NSString * is_private变量?
谢谢!
答案 0 :(得分:3)
您应该能够像这样处理它:
id value = [dict valueForKey:@"is_private"];
NSString *is_private = [value isEqual:[NSNull null]] ? nil : value;
答案 1 :(得分:1)
为什么在将[dict objectForKey:@"is_private"]
传递给nil
之前,您只是检查[NSNull null]
是stringWithString:
还是{{1}}?
答案 2 :(得分:1)
您的问题与NSJSONSerialization
无关,而且与您将nil
值传递给stringWithString:
的事实有关。为什么不只是那条线到NSString *is_private = [dict objectForKey:@"is_private"];
?
另外,为什么使用NSString
来存储布尔值? NSNumber
会更合适。