正确地将NSString转换为CGFloat,NSInteger等

CIF*_*ter 9 types objective-c nsstring

我有个问题关于安全地或适当地转换一个NSString分为不同的类型,例如CGFloatNSInteger,考虑到这些,苹果创建使用不同的原语取决于某些因素(例如,简单地包装类型NSIntegertypedef"d到int在32位体系结构和long上64位架构).

例如,我知道我可以使用类似的[ someString intValue ][ someString longValue ],但我怎么不是说我想someString成为一个NSInteger,让底层的原始的精度由编译器来选择?NSInteger integer = [ someString intValue ]如果someString是从NSInteger64位系统创建的,那么说类似会导致数据丢失,对吧?处理这种情况的最佳方法是什么?

Chu*_*uck 11

integerValue改用.如果字符串表示的整数大于32位INT_MAX,则获取int只会导致问题,但使用更兼容的方法仍然更好.

  • @Casebash floatValue (4认同)