我知道我们可以使用nil来验证目标c中的空值。我一直试图使用它,但程序每次都会崩溃。
这就是我作为回应服务的内容
2013-12-16 12:45:32.867 Pizza to Go[1857:a0b] 0
2013-12-16 12:45:32.868 Pizza to Go[1857:a0b] <null>
2013-12-16 12:45:32.868 Pizza to Go[1857:a0b] <null>
2013-12-16 12:45:32.868 Pizza to Go[1857:a0b] <null>
2013-12-16 12:45:32.868 Pizza to Go[1857:a0b] <null>
2013-12-16 12:45:32.869 Pizza to Go[1857:a0b] 70
2013-12-16 12:45:32.869 Pizza to Go[1857:a0b] 130
2013-12-16 12:45:32.869 Pizza to Go[1857:a0b] 0
2013-12-16 12:45:32.869 Pizza to Go[1857:a0b] 80
2013-12-16 12:45:32.869 Pizza to Go[1857:a0b] 50.5
2013-12-16 12:45:32.869 Pizza to Go[1857:a0b] 10
我先尝试了这个并且崩溃了
if([[result[i] objectForKey:@"ordertotalprice"] isEqualToString:@"<null>"]){
orderHead.price = 0;
}else{
orderHead.price = [[result[i] objectForKey:@"ordertotalprice"] doubleValue];
}
然后这也崩溃了。
if([result[i] objectForKey:@"ordertotalprice"] == nil){
orderHead.price = 0;
}else{
orderHead.price = [[result[i] objectForKey:@"ordertotalprice"] doubleValue];
}
这是来自错误日志
-[NSNull doubleValue]: unrecognized selector sent to instance 0x20af068
2013-12-16 12:55:19.017 Pizza to Go[2083:a0b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull doubleValue]: unrecognized selector sent to instance 0x20af068'
我不确定我在这里做错了什么。一些帮助apreciated。
答案 0 :(得分:3)
NSDictionary
/ NSMutableDictionary
接受[NSNull null]
表示空条目。
编辑:但是,只是比较值
if([result[i] objectForKey:@"ordertotalprice"]){
orderHead.price = 0;
}else{
orderHead.price = [[result[i] objectForKey:@"ordertotalprice"] doubleValue];
}
就足够了。
答案 1 :(得分:3)
基础集合只能包含对象类型(NSObject
子类)。因此,为了表示零,我们使用+[NSNull null]
。恰好NSNull
-description
的实现返回<null>
,这就是您在控制台中看到的内容。
请尝试将-objectForKey
的结果与[NSNull null]
进行比较。
答案 2 :(得分:2)
if ([[result[i] objectForKey:@"ordertotalprice"] isKindOfClass:[NSNull class]])
{
orderHead.price = 0;
}
答案 3 :(得分:1)
if(![result[i] objectForKey:@"ordertotalprice"]){
orderHead.price = 0;
}else{
orderHead.price = [[result[i] objectForKey:@"ordertotalprice"] doubleValue];
}