0

ユーザーの基本データを取得するために、facebook SDK を使用して facebook API にリクエストを行いました。すべて正常に動作しますが、Facebook ID を NSInteger 番号として渡そうとすると、返される番号が間違っています。

Facebook ID は 100001778401161 ですが、数値を NSInteger に変換すると、返される数値は 2054848393 になります。

Facebook IDをNSInteger変数に保存するにはどうすればよいですか?

私の現在のコードは次のとおりです。

NSLog(@"The ID: %ld", (long)[[user objectForKey:@"id"] intValue])

ありがとう。

4

3 に答える 3

3

このような数値には 64 ビットが必要ですが、NSInteger は 32 ビットしかカバーしません (正の数値の場合は 31 ビットのみ)。long long 値を使用してみてください。

NSLog(@"The ID: %lld", [[user objectForKey:@"id"] longLongValue]);

何らかの方法でオブジェクトとして保存する必要がある場合は、 NSNumber も使用できます。

NSNumber *number=[NSNumber numberWithLongLong:[user[@"id"] longLongValue]];
于 2013-08-06T18:33:56.953 に答える
0

NSInteger (および long) は 32 ビット値であり、使用している ID が保持できる最大値を超えているため、オーバーフローします。あなたは試すことができます:

long long facebookId = [[user objectForKey: @"id"] longLongValue];
NSLog(@"The ID: %lld", facebookId);

私は facebook API について何も知らないので、ID が時間の経過とともに数値であることが保証されていることを確認することをお勧めします。たとえば、ID が文字列であることをどこかに指定している場合、それらが常に数値であるように見えても、それを照合する必要があります。

于 2013-08-06T18:37:25.550 に答える