web-dev-qa-db-ja.com

iOSのintからNSNumberへの暗黙的な変換はARCでは許可されていません

次のコードでエラーメッセージが表示されます:「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>

ヘルプやヒントをありがとう!

よろしく、ダニエル

12
Daniel

[success intValue] == 1を使用する必要があります。 NSNumberはクラスであるため、数値はポインターであり、直接の値ではありません。

14
user1340450

NSNumberintを比較しているためエラー。

次のようにしてみてください-

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

または

if ([success intValue] == 1)
26
rishi

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

if ([success intValue] == 1) {
   ...
}
3
omz

successがブール値を示す必要がある場合は、これを試してみてください。

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

if ([success boolValue]) { 
  // success!
}
1
tilo