Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone NSInteger和facebookId_Iphone_Ios_Facebook_Nsinteger - Fatal编程技术网

Iphone NSInteger和facebookId

Iphone NSInteger和facebookId,iphone,ios,facebook,nsinteger,Iphone,Ios,Facebook,Nsinteger,我使用facebook SDK向facebook API发出请求,以获取用户基本数据。一切正常,但当我试图将facebook ID作为NSInteger号码传递时,返回的号码是错误的 facebook ID是:100001778401161 但将数字转换为NSInteger后,返回的数字是:2054848393 如何将facebook ID存储在NSInteger变量上 我目前的代码是: NSLog(@"The ID: %ld", (long)[[user objectForKey:@"id"]

我使用facebook SDK向facebook API发出请求,以获取用户基本数据。一切正常,但当我试图将facebook ID作为NSInteger号码传递时,返回的号码是错误的

facebook ID是:100001778401161 但将数字转换为NSInteger后,返回的数字是:2054848393

如何将facebook ID存储在NSInteger变量上

我目前的代码是:

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

谢谢。

这样的数字需要64位,NSInteger只包含32位(正数只有31位)。尝试使用长值:

NSLog(@"The ID: %lld", [[user objectForKey:@"id"] longLongValue]);
如果需要以某种方式将NSNumber存储为对象,也可以使用NSNumber:

NSNumber *number=[NSNumber numberWithLongLong:[user[@"id"] longLongValue]];

这样的数字需要64位,NSInteger只包含32位(正数只有31位)。尝试使用长值:

NSLog(@"The ID: %lld", [[user objectForKey:@"id"] longLongValue]);
如果需要以某种方式将NSNumber存储为对象,也可以使用NSNumber:

NSNumber *number=[NSNumber numberWithLongLong:[user[@"id"] longLongValue]];
NSInteger(和long)是一个32位的值,并且您使用的ID超过了它可以容纳的最大值,因此它会溢出。你可以试试:

long long facebookId = [[user objectForKey: @"id"] longLongValue];
NSLog(@"The ID: %lld", facebookId);
我对facebook API一无所知,因此您可能需要确保ID随时间的推移保证为数字。例如,如果它们在某个地方指定ID为字符串,则即使它们似乎始终是数字,您也应该匹配该字符串。

NSInteger(和long)是32位值,并且您使用的ID超过了它可以容纳的最大值,因此它会溢出。你可以试试:

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

我对facebook API一无所知,因此您可能需要确保ID随时间的推移保证为数字。例如,如果它们在某个地方指定ID为字符串,则即使它们似乎始终是数字,也应与之匹配。

您不能将大于2^31的数字存储在
NSInteger
类型中。 如果要存储较大的,则可以使用
NSDecimalNumber
对象。 或者您可以使用
无符号long-long
类型

NSDecimalNumber *number = [NSDecimalNumber decimalNumberWithString:[user objectForKey:@"id"]];
NSLog(@"Number: %@", number);

unsigned long long ullValue = strtoull([user objectForKey:@"id"], NULL, 0);
NSLog(@"Number: %llu", ullValue);

希望这对你有帮助

您不能在
NSInteger
类型中存储大于2^31的数字。 如果要存储较大的,则可以使用
NSDecimalNumber
对象。 或者您可以使用
无符号long-long
类型

NSDecimalNumber *number = [NSDecimalNumber decimalNumberWithString:[user objectForKey:@"id"]];
NSLog(@"Number: %@", number);

unsigned long long ullValue = strtoull([user objectForKey:@"id"], NULL, 0);
NSLog(@"Number: %llu", ullValue);

希望这对你有帮助

只需将其存储为字符串。不需要把它转换成整数,但我需要把它当作一个数字来处理,这是我的问题。然后像你那样转换它。。。[string intValue]只需将其存储为字符串即可。不需要把它转换成整数,但我需要把它当作一个数字来处理,这是我的问题。然后像你那样转换它。。。[string intValue]谢谢,这正是我需要的。谢谢,这正是我需要的。