这个真的让我神秘化了。
我有一本字典,用于跟踪错误和警告的数量。
好吧,在if (...)
区块中,如图所示,我正在测试0个错误,并且出于某种原因,我尝试过的每个代码组合都表示错误计数> 0 是真的。
以下是LLDB控制台的一些结果......
(lldb)po violationCounts [@“errors”]
0
(lldb)po [violationCounts [@“errors”] class]
__ NSCFNumber
(lldb)p violationCounts [@“errors”]> 0(布尔)
$ 2 = true
(lldb)p((int)violationCounts [@“errors”])> 0(布尔)
$ 3 = true
为什么评估 violationCounts是> 0
答案 0 :(得分:2)
由于它保存为NSNumber
,因此应该是:
po [violationCounts[@"errors"] integerValue] > 0
答案 1 :(得分:1)
violationCounts[@"errors"]
的值是NSNunber
,因此必须将其转换为整数,而不是强制转换:
if ([violationCounts[@"errors"] integerValue] > 0)
NSDictionaries
中的所有值都是对象。
要在取消器中打印它,没有必要转换它,因为将调用描述方法并将其转换为显示。但是必须使用“po”(打印对象)而不是“p”(打印):
po violationCounts[@"errors"]