我有以下代码:
id value = characteristic.value;
long valueBefore = (long)characteristic.value;
int valueAfter = (int) valueBefore;
产生以下值:
当我查看 id值时,我会看到"(长)6"这是我期望的价值( 6 )。但是,当我把它投了很长时间我得到 -5764..etc..781 。这是为什么?
如何将值转换为值为6的int?调试器表示该值为 _NSCFNumber 。
答案 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
method从NSNumber
对象获取包装值;您无法将对象强制转换为基本类型:
NSNumber *numobj = characteristic.value;
long value = [numobj longValue];