次のコードでエラーメッセージが表示されます:「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>
ヘルプやヒントをありがとう!
よろしく、ダニエル
[success intValue] == 1
を使用する必要があります。 NSNumberはクラスであるため、数値はポインターであり、直接の値ではありません。
NSNumber
とint
を比較しているためエラー。
次のようにしてみてください-
if ([success isEqual:[NSNumber numberWithInt:1]])
または
if ([success intValue] == 1)
NSNumber
はオブジェクト(つまりポインタ)であるため、1
のような整数リテラルと単に比較することはできません。代わりに、数値オブジェクトからint
値を抽出する必要があります。
if ([success intValue] == 1) {
...
}
success
がブール値を示す必要がある場合は、これを試してみてください。
NSDictionary *results = [jsonstring JSONValue];
NSNumber *success = [results objectForKey:@"success"];
if ([success boolValue]) {
// success!
}