关于以下代码我得到错误消息:ARC不允许将'int'隐式转换为'NSNumber *'。
我做错了什么?
<pre>
<code>
NSDictionary *results = [jsonstring JSONValue];
NSNumber *success = [results objectForKey:@"success"]; // possible values for "success": 0 or 1
if (success == 1) { // ERROR implicit conversion of int to NSNumber disallowed with ARC
}
</code>
</pre>
感谢您提供任何帮助或提示!
问候,丹尼尔
答案 0 :(得分:25)
Erro,因为您要将NSNumber
与int
进行比较。
尝试 -
if ([success isEqual:[NSNumber numberWithInt:1]])
或
if ([success intValue] == 1)
答案 1 :(得分:14)
您应该使用[success intValue] == 1
。 NSNumber是一个类,因此number是一个指针,而不是直接值。
答案 2 :(得分:3)
NSNumber
是一个对象(即指针),因此您无法将其与1
之类的整数文字进行比较。相反,您必须从数字对象中提取int
值:
if ([success intValue] == 1) {
...
}
答案 3 :(得分:1)
如果success
应该表示布尔值,您可能想尝试这个
NSDictionary *results = [jsonstring JSONValue];
NSNumber *success = [results objectForKey:@"success"];
if ([success boolValue]) {
// success!
}