Compare a NSNumber to an int(将 NSNumber 与 int 进行比较)
问题描述
我有一个简单的问题(我认为):我正在尝试将 NSNumber 与 int 进行比较,看看它是 0 还是 1.代码如下:
I've a simple question (I think): I'm trying to compare a NSNumber with a int, to see if it is 0 or 1. Here is the code:
id i = [dictionary objectForKey:@"error"]; //class = NSCFNumber
NSLog(@"%@ == 0 -> %@", i, i == 0);
NSLog(@"%@ == 0 -> %@", i, [i compare:[NSNumber numberWithBool:NO]]);
我对方法进行了尝试,但结果为 null:
I tried this to methods but I get null as result:
2010-10-17 21:57:49.065 Api[15152:a0f] 0 == 0 -> (null)
2010-10-17 21:57:49.065 Api[15152:a0f] 0 == 0 -> (null)
你能帮帮我吗?
推荐答案
比较的结果是一个不是Objective-C对象的BOOL.因此,您应该不使用
%@
打印它.改用%d
(显示 0 或 1).
The result of comparison is a BOOL which is not an Objective-C object. Therefore you should not print it using
%@
. Try%d
instead (shows 0 or 1).
[a compare:b]
如果 a < 则返回 -1b
,如果 a == b
则为 0,如果 a > 则为 1b代码>.所以你的第二个结果是预期的.
[a compare:b]
returns -1 if a < b
, 0 if a == b
and 1 if a > b
. So your 2nd result is expected.
您不能直接将 NSNumber 与整数进行比较.i == 0
实际上是一个 pointer 比较,它检查 i
是否为 NULL (0),如果该数字存在,这当然是 FALSE.所以第一个结果也是预期的.
You cannot compare an NSNumber directly with an integer. That i == 0
is actually a pointer comparison which checks whether i
is NULL (0), which of course is FALSE if that number exists. So the 1st result is also expected.
如果你想检查是否相等,使用[a isEqualToNumber:b]
.或者,您可以使用 [a intValue]
提取整数并直接与另一个整数进行比较.
If you want to check for equality, use [a isEqualToNumber:b]
. Alternatively, you could extract the integer out with [a intValue]
and compare with another integer directly.
所以以下应该可以工作:
So the followings should work:
NSLog(@"%@ == 0 -> %d", i, [i isEqualToNumber:[NSNumber numberWithInt:0]]);
NSLog(@"%@ == 0 -> %d", i, [i intValue] == 0);
如果数字"实际上是一个布尔值,最好使用 -boolValue
.
If the "number" is in fact a boolean, it's better to take the -boolValue
instead.
NSLog(@"%@ == 0 -> %d", i, ! [i boolValue]);
这篇关于将 NSNumber 与 int 进行比较的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:将 NSNumber 与 int 进行比较


基础教程推荐
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01