Objective c 将字符串转换为int会更改值

Objective c 将字符串转换为int会更改值,objective-c,cocoa,nsstring,integer,Objective C,Cocoa,Nsstring,Integer,我正在尝试将从XML解析器检索到的字符串值转换为整数。不幸的是,我发现整数值没有反映字符串中的数字,我也不知道为什么。这是我的密码: int maxTweetID = [[[_dataArray lastObject]tweetID]intValue]; NSLog(@"String Value of tweet ID: %@",[[_dataArray lastObject]tweetID]); NSLog(@"Int Value of tweet ID: %i",[[[_dataArray

我正在尝试将从XML解析器检索到的字符串值转换为整数。不幸的是,我发现整数值没有反映字符串中的数字,我也不知道为什么。这是我的密码:

int maxTweetID = [[[_dataArray lastObject]tweetID]intValue];

NSLog(@"String Value of tweet ID: %@",[[_dataArray lastObject]tweetID]);
NSLog(@"Int Value of tweet ID: %i",[[[_dataArray lastObject]tweetID]intValue]);
下面是我从调试器得到的信息:

2012-05-15 10:58:44.395 nearYou[2460:707] String Value of tweet ID: 202425636143370242
2012-05-15 10:58:44.396 nearYou[2460:707] Int Value of tweet ID: 2147483647

这是为什么?

字符串中的数字太大,无法存储为整数。32位可能的最高整数为2.147.483.647。尝试使用长字符串。

字符串中的数字太大,无法存储为整数。32位可能的最高整数为2.147.483.647。请尝试使用长字符。

该数字太大,无法放入32位
int
。您要做的是使用
long

long maxTweetID = [[[_dataArray lastObject]tweetID]longValue];
编辑:

实际上,您需要在Objective-C中使用
long

long long maxTweetID = [[[_dataArray lastObject]tweetID]longLongValue];

该数字太大,无法放入32位
int
。您要做的是使用
long

long maxTweetID = [[[_dataArray lastObject]tweetID]longValue];
编辑:

实际上,您需要在Objective-C中使用
long

long long maxTweetID = [[[_dataArray lastObject]tweetID]longLongValue];

NSString
上没有方法
longValue
。桌面上有64位的
integerValue
,还有
longvalue
。是的,这也行。使用以下代码更改值时遇到问题:double newestID=(maxID-1.0);知道为什么吗?maxID也是一个double在
NSString
上没有方法
longValue
。桌面上有64位的
integerValue
,还有
longvalue
。是的,这也行。使用以下代码更改值时遇到问题:double newestID=(maxID-1.0);知道为什么吗?maxID是一个双倍体,这很管用。后续问题:我不能从这个值中减去1吗?双newestID=(maxID-1.0);NSLog(@“最新ID为%f,最大ID为%f”,newestID,最大ID);有什么想法吗?太棒了,这很管用。后续问题:我不能从这个值中减去1吗?双newestID=(maxID-1.0);NSLog(@“最新ID为%f,最大ID为%f”,newestID,最大ID);有什么想法吗?