Ios Can';无法从NSDictionary获取int

Ios Can';无法从NSDictionary获取int,ios,objective-c,nsdictionary,Ios,Objective C,Nsdictionary,我只想从我的字典中得到一个字段。我想得到整数变量,但有些事情很奇怪 我想给你们看一个Xcode的截图,在那里我得到了变量值。变量“price”是整数,应该等于0,您能帮助我吗 我以以下方式创建此词典: NSDictionary * dict = [[NSDictionary alloc] initWithObjectsAndKeys: [NSString stringWithFormat:@"%@",[dicti

我只想从我的字典中得到一个字段。我想得到整数变量,但有些事情很奇怪

我想给你们看一个Xcode的截图,在那里我得到了变量值。变量“price”是整数,应该等于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];

可变价格不能是整数。 NSDictionary中的每个键和值都必须是NSObject。 因此,它可能是一个数字。检索NSNumber值的操作如下所示:

NSNumber *number = @(2);
int numberAsInt = number.intValue;

希望这有助于价格
键的值要么是值为
@“0”
NSString
,要么是值为
0
NSNumber
。你没有提供足够的信息来知道这两个是哪一个

在调试器中,首先执行以下操作(我是缩写):

采购订单[@“价格”]

这给出了以下各项的预期和正确输出:

0

因为这是
NSNumber
NSString
的值

然后你会:

采购订单[@“价格”]==0

你会得到:

假的

这也是正确和预期的结果。由于
dict[@“price”]
的结果是一个非nil对象指针,并且您询问该指针是否为
nil
==0
==nil
相同),因此会得到
false
。由于不能在字典中存储
nil
对象,因此结果不会
nil
,并且会报告
false

要查看
NSNumber
NSString
的值是否为
0
,应执行以下操作:

采购订单[@“价格”].intValue==0

您将获得以下期望结果:

真的

您最后一次尝试:

采购订单[@“价格”].intValue

导致:

这也是正确的结果,因为
dict[@“price”]的值。intValue
0
int
值。但是您使用了
po
,这意味着
print object
,因此
0
被解释为
nil
。如果您这样做:

p dict[@“price”].intValue

您将获得以下所需的结果:

0


使用
po
打印对象值。使用
p
打印基本值(例如
int
)。

我编辑了我的问题并演示了如何创建此词典。我将此零保存为NSSting(您仍然可以使用intValue.NSString*NumberString=@“2”;int number=NumberString.intValue