12

次のコードでエラーメッセージが表示されます:「int」から「NSNumber*」への暗黙の変換はARCでは許可されていません。

私が間違っているのは何ですか?

<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はオブジェクト (つまりポインター) であるため、 のような整数リテラルと単純に比較することはできません1int代わりに、number オブジェクトから値を抽出する必要があります。

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 に答える