我只想从我的 NSDictionary 中获取一个字段。我想获得整数变量,但有些事情很奇怪。
我想给你看一张 Xcode 的截图,我在那里得到了变量值。变量“价格”是整数,应该等于 0,你能帮帮我吗?
我以这种方式创建这个词典:
NSDictionary * dict = [[NSDictionary alloc] initWithObjectsAndKeys:
[NSString stringWithFormat:@"%@",[dictionary objectForKey:@"price"]], @"price",
pairedData2, @"uniqueName",
[NSString stringWithFormat:@"0"],@"wasPurchased",
[dictionary objectForKey:@"link"],@"videoLink",
[NSString stringWithFormat:@"%@", [dictionary objectForKey:@"enable"]], @"enable",
nil];
最佳答案
price
键的值要么是一个 NSString
,其值为 @"0"
,要么是一个 NSNumber
的值为 0
。您没有提供足够的信息来判断它是两者中的哪一个。
在你的调试器中,你首先要做的(我是缩写):
po dict[@"price"]
这给出了预期和正确的输出:
0
因为这是 NSNumber
或 NSString
的值。
然后你做:
po dict[@"price"] == 0
你得到:
false
这又是正确的预期结果。你得到 false
因为 dict[@"price"]
的结果是一个非 nil 对象指针,而你问的是指针是否为 nil
(== 0
与 == nil
相同)。由于您不能在字典中存储 nil
对象,因此结果不是 nil
并报告 false
。
要查看 NSNumber
或 NSString
的值是否为 0
,您应该这样做:
po dict[@"price"].intValue == 0
您将收到以下期望结果:
true
您的最后一次尝试:
po dict[@"price"].intValue
结果:
nil
这又是正确的结果,因为 dict[@"price"].intValue
的值是 0
的 int
值。但是您使用了 po
,这意味着 print object
因此 0
被解释为 nil
。如果你这样做:
p dict[@"price"].intValue
你会得到想要的结果:
0
使用po
打印对象值。使用 p
打印原始值(例如 int
)。
关于ios - 无法从 NSDictionary 获取 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33502744/