我一直在使用以下方法将 NSString 解析为 NSNumber:
// (a category method on NSString)
-(NSNumber*) tryParseAsNumber {
NSNumberFormatter* formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
return [formatter numberFromString:self];
}
我进行了测试以验证它是否正常工作:
test(@"".tryParseAsNumber == nil);
...
test([(@NSUIntegerMax).description.tryParseAsNumber isEqual:@NSUIntegerMax]);
...
当我切换到 iPhone 6 上进行测试时,最大值测试开始失败,可能是因为 NSUInteger 现在是 64 位而不是 32 位。格式化程序返回的值现在是 double1.844674407370955e+19
而不是 uint64_t 18446744073709551615
。
是否有一种内置方法可以完全适用于所有 int64s 和 unsigned int64s,还是我必须自己实现一个?