为什么NSString不响应选择器longValue但是响应longLongValue和intValue?

时间:2016-02-21 09:16:08

标签: ios objective-c nsstring

我想通过调用long来获取NSString的{​​{1}}值,但longValue不响应NSString。但是,确实会回复longValueintValue

这是预期的行为吗?如果是,为什么?我无法看到它回应longLongValueintValue而非longLongValue的合理原因。

我可以在longValue上添加一个类别并添加:

NSString

这解决了我的问题。但我仍然不明白为什么这不是默认实现。

2 个答案:

答案 0 :(得分:5)

修改1:

这应该回答你为什么我们无法从NSString获取longValue Major 64-bit changes

第一回答:

Apple的文档提到只获取以下数字类型:

doubleValue
floatValue
intValue
integerValue
longLongValue
boolValue

Apple's doc on NSString

因此,从NSString 类型中获取 longValue的方法之一可能就是你如何做到这一点。

我不确定您是否会在输入longValue时得到预期的结果。

但是,从NSString获取longValue的另一种可能方法是:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; long number = [[numberFormatter numberFromString:string] longValue];

答案 1 :(得分:1)

如果您想在所有CPU架构中使用64位,那么您需要long longint64_t,以满足以下条件:

[NSString longLongValue]