Objective-C - 比较整数不能按预期工作

Posted

技术标签:

【中文标题】Objective-C - 比较整数不能按预期工作【英文标题】:Objective-C - Comparing integers not working as expected 【发布时间】:2010-12-19 18:46:06 【问题描述】:

所以我的问题是这样的:

我正在通过网络接收一个 JSON 字符串。解码后(使用 SBJSON 库),它成为一个 NSDictionary,应该包含一些用于键 'userid' 的某种类型。我说“应该”是因为当我将值与 int、NSINTEGER 或 NSNumber 进行比较时,它永远不会正确评估。

下面是代码对比:

NSDictionary *userDictionary = [userInfo objectAtIndex:indexPath.row];

if ([userDictionary objectForKey:@"userid"] == -1) 
 //Do stuff

我正在测试的字典中的值为-1。当我使用 NSLog 将其打印到控制台时,它甚至显示它是-1。然而,当我将它与“if”语句中的 -1 进行比较时,当它应该为真时,它的评估结果为假。我什至尝试过与 [NSNumber numberWithInt: -1] 进行比较,结果仍然为 false。

我做错了什么?提前感谢您的帮助!

【问题讨论】:

【参考方案1】:

您正在比较指向对象的指针,而不是整数本身。您必须先将对象转换为整数:

if ([[userDictionary objectForKey:@"userid"] integerValue] == -1)

     //Do stuff

【讨论】:

以上是关于Objective-C - 比较整数不能按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

为啥 itertools groupby 不能按预期工作? [复制]

我的挤压功能没有按预期工作,我该怎么做才能修复这个功能?

具有比较器的优先级队列未按预期工作

两个多头之间的比较没有按预期工作[重复]

为啥 nodejs 中的睡眠不能按预期工作

为啥这个回滚功能不能按预期工作