Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.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
Objective c -[NSString intValue]返回的值与字符串显示的值完全不同_Objective C_Ios_Nsstring - Fatal编程技术网

Objective c -[NSString intValue]返回的值与字符串显示的值完全不同

Objective c -[NSString intValue]返回的值与字符串显示的值完全不同,objective-c,ios,nsstring,Objective C,Ios,Nsstring,我有一个数字字符串,并且观察到一个离散度,它的intValue与其字符串值相差很大。代码如下: NSString *string = [result objectForKey:@"id"]; NSLog(@"ID %@",string); NSLog(@"ID as integer %i",[string intValue]); 给出一个输出: "ID 100004378121454" "ID as integer 2147483647" 我能做出的唯一逻辑猜测是字符串太长,无法转换为int

我有一个数字字符串,并且观察到一个离散度,它的
intValue
与其字符串值相差很大。代码如下:

NSString *string = [result objectForKey:@"id"];
NSLog(@"ID %@",string);
NSLog(@"ID as integer %i",[string intValue]);
给出一个输出:

"ID 100004378121454"
"ID as integer 2147483647"
我能做出的唯一逻辑猜测是字符串太长,无法转换为
int
。。。在任何情况下,我尝试了
longLongValue
等-得到不同的结果,但不是它应该得到的结果。

您的数字(100004378121454)比简单的整数可以处理的数字大,在这种情况下,您必须使用
long
类型(不要将您的数字截断为int32的最大值):

输出:

ID              100004378121454
ID as long long 100004378121454

您是对的,您已经达到了32位int的极限,但是longValue应该可以工作。那么结果是什么?尝试使用无符号int(u_int32最大值9223372036854775808)您知道“string”实际上是一个NSString而不是NSNumber吗?您可能要查询该类。@elio.d,它将是有符号64位整数的最大值。一个无符号32位整数的最大值约为40亿。多亏了所有的评论和这个答案,我对我应该在%后面加什么首字母以使它正确地输出一个long-long感到困惑…干杯
ID              100004378121454
ID as long long 100004378121454