使用ARC不允许将int隐式转换为NSNumber

时间:2012-05-18 10:55:36

标签: objective-c ios nsnumber

关于以下代码我得到错误消息: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>

感谢您提供任何帮助或提示!

问候,丹尼尔

4 个答案:

答案 0 :(得分:25)

Erro,因为您要将NSNumberint进行比较。

尝试 -

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!
}