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

时间:2012-05-15 17:59:59

标签: 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 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

为什么会这样?

2 个答案:

答案 0 :(得分:2)

该数字太大而无法容纳32位int。你想要做的是改用long

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

修改

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

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

答案 1 :(得分:1)

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