Objective-C valueForKey int返回不正确的值

时间:2016-01-05 19:21:39

标签: objective-c

所以我目前正在开发一个Objective-C项目,我正在调用[mySpecialObject valueForKey:@"myVariable"],它应该返回值3(整数)。

通过调试器,键上对象的值实际上是3,但调用[mySpecialObject valueForKey:@"myVariable"]返回807.

类型转换(id)[mySpecialObject valueForKey:@"myVariable"]返回(__NSCFNumber *)0x0000000000000327 (int)3

有谁知道造成这种不匹配的原因是什么?我错误地进行了类型转换吗?

格式化:

[mySpecialObject valueForKey:@"myVariable"] // SHOULD RETURN 3
(int)[mySpecialObject valueForKey:@"myVariable"] // returns 807
(id)[mySpecialObject valueForKey:@"myVariable"] // returns (__NSCFNumber *)0x0000000000000327 (int)3 

注意:要清楚,myVariable在mySpecialObject中的类型是int,我将返回值转换为int。

1 个答案:

答案 0 :(得分:2)

由于valueForKey:方法返回id,它必须所有原语包装到Objective-C对象中。在这种情况下,int包含在NSNumber对象中。

如果您知道字段/属性的类型为int,请执行以下操作:

int num = [[mySpecialObject valueForKey:@"myVariable"] intValue];

参考文档:Scalar and Structure Support in Key Value Coding