无法将_NSCFNumber转换为int

时间:2015-05-27 07:53:31

标签: ios objective-c casting long-integer type-conversion

我有以下代码:

id value = characteristic.value;
long valueBefore = (long)characteristic.value;
int valueAfter = (int) valueBefore;

产生以下值:

enter image description here

当我查看 id值时,我会看到"(长)6"这是我期望的价值( 6 )。但是,当我把它投了很长时间我得到 -5764..etc..781 。这是为什么?

如何将值转换为值为6的int?调试器表示该值为 _NSCFNumber

3 个答案:

答案 0 :(得分:3)

您的代码返回NSNumber,因此您必须使用bellow方法而不是强制转换来获取int值。

NSNumber *value = characteristic.value;
long valueBefore = [value longValue]
int valueAfter =  [value intValue];

答案 1 :(得分:1)

尝试像这样投射:

Datatype variable = [value integerValue];

希望它会对你有所帮助。

答案 2 :(得分:0)

您需要使用longValue methodNSNumber对象获取包装值;您无法将对象强制转换为基本类型:

NSNumber *numobj = characteristic.value;
long value = [numobj longValue];