我想通过调用long
来获取NSString
的{{1}}值,但longValue
不响应NSString
。但是,确实会回复longValue
和intValue
。
这是预期的行为吗?如果是,为什么?我无法看到它回应longLongValue
和intValue
而非longLongValue
的合理原因。
我可以在longValue
上添加一个类别并添加:
NSString
这解决了我的问题。但我仍然不明白为什么这不是默认实现。
答案 0 :(得分:5)
修改1:
这应该回答你为什么我们无法从NSString获取longValue Major 64-bit changes
第一回答:
Apple的文档提到只获取以下数字类型:
doubleValue
floatValue
intValue
integerValue
longLongValue
boolValue
因此,从NSString 类型中获取 longValue的方法之一可能就是你如何做到这一点。
我不确定您是否会在输入longValue时得到预期的结果。
但是,从NSString获取longValue的另一种可能方法是:
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
long number = [[numberFormatter numberFromString:string] longValue];
答案 1 :(得分:1)
如果您想在所有CPU架构中使用64位,那么您需要long long
或int64_t
,以满足以下条件:
[NSString longLongValue]