2015-11-03 64 views
0

我只想从我的NSDictionary中获得一个字段。我想获得整型变量,但有些东西很奇怪。无法从NSDictionary得到int

我想告诉你一个Xcode的截图,那里我得到变量的值。变量'价格'是整数,应该等于0,你能帮助我吗?

enter image description here

我以这样的方式创建这个字典:

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]; 

回答

2

price键的值是一个NSString@"0"的值或者它是一个NSNumber0值。你没有提供足够的信息来知道它是哪一个。

在调试器,你首先做(我缩写):

婆字典[@ “价格”]

,这给预期和正确的输出:

自认为是012的值或NSString

然后你做:

婆字典[@ “价格”] == 0

,你会得到:

哪个再次是正确和预期的结果。您得到false,因为dict[@"price"]的结果是一个非零对象指针,并且您在询问指针是否为nil== 0== nil相同)。由于您无法在字典中存储nil对象,因此报告的结果不是nilfalse

要看到,如果NSNumberNSString的价值0,你应该做的:

婆字典[@ “价格”。的intValue == 0

,你会收到的愿望结果:

真正

你的最后一次尝试:

婆字典[@ “价格” ] .intValue

导致:

这又是一个正确的结果,因为dict[@"price"].intValue值的0int值。但是您使用的是po,这意味着print object,所以0被解释为nil。如果你这样做:

p字典[@ “价格”]的intValue

你会得到期望的结果:

使用po到打印对象值。使用p来打印原始值(如int)。

+0

很清楚(和耐心)答案。已投票。 –

0

变价不可能是整数。 NSDictionary中的每个键和值都必须是NSObject。 因此它可能是一个NSNumber。检索一个NSNumber值就是这样完成的:

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

希望帮助

+0

我编辑了我的问题,并展示了我如何创建这本词典。我保存这个零NSSting( –

+0

你仍然可以使用的intValue 的NSString * numberAsString = @“2”; INT数= numberAsString.intVAlue –

+0

我试过了,但仍然无法正常工作,这里应该是另一... –