12

在以下代码中,我收到错误消息: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

4 回答 4

28

错误,因为您正在NSNumber与进行比较int

试试看——

if ([success isEqual:[NSNumber numberWithInt:1]])

或者

if ([success intValue] == 1)
于 2012-05-18T10:57:20.217 回答
15

你应该使用[success intValue] == 1. NSNumber 是一个类,所以 number 是一个指针,而不是直接值。

于 2012-05-18T10:57:47.093 回答
3

NSNumber是一个对象(即指针),所以你不能只将它与像1. 相反,您必须int从数字对象中提取值:

if ([success intValue] == 1) {
   ...
}
于 2012-05-18T10:58:07.447 回答
1

如果success应该指示布尔值,您可能想试试这个

NSDictionary *results = [jsonstring JSONValue];
NSNumber *success = [results objectForKey:@"success"]; 

if ([success boolValue]) { 
  // success!
}
于 2012-05-18T11:00:20.047 回答