NSScanner不会将长数字字符串扫描到数字中

时间:2014-07-08 21:56:43

标签: ios objective-c cocoa-touch nsscanner

我有一个字符串" 999999999999528106"我将它传递给NSScanner,但输出不正确。结果得到2147483647。

我猜我的字符串的大小不适合NSInteger。任何线索

    NSScanner *aScanner = [NSScanner scannerWithString:iString];
    NSMutableCharacterSet *aCharset = [NSMutableCharacterSet whitespaceAndNewlineCharacterSet];
    [aCharset formUnionWithCharacterSet:[NSCharacterSet symbolCharacterSet]];
    [aScanner setCharactersToBeSkipped:[aCharset copy]];


    NSInteger anIntegerResult = 0;
    [aScanner setScanLocation:0];
    if ([aScanner scanInteger:&anIntegerResult] && aScanner.isAtEnd)
        return @(anIntegerResult);

1 个答案:

答案 0 :(得分:2)

来自the NSScanner documentation

  

在溢出的情况下跳过多余的数字,因此接收者的位置超过整个整数表示。

所以是的,它已经满溢了。您可以改为使用scanLongLong: