Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 目标-C值forkey int返回不正确的值_Objective C - Fatal编程技术网

Objective c 目标-C值forkey int返回不正确的值

Objective c 目标-C值forkey int返回不正确的值,objective-c,Objective C,因此,我目前正在处理一个Objective-C项目,我正在调用[mySpecialObject valueForKey:@“myVariable”],它应该返回值3(一个整数) 通过调试器,键处的对象值实际上是3,但是调用[myspecialobjectvalueforkey:@“myVariable”]返回807 类型转换(id)[mySpecialObject valueForKey:@“myVariable”]返回(\uu NSCFNumber*)0x0000000000000327(in

因此,我目前正在处理一个Objective-C项目,我正在调用
[mySpecialObject valueForKey:@“myVariable”]
,它应该返回值3(一个整数)

通过调试器,键处的对象值实际上是3,但是调用
[myspecialobjectvalueforkey:@“myVariable”]
返回807

类型转换
(id)[mySpecialObject valueForKey:@“myVariable”]
返回
(\uu 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。

因为
valueForKey:
方法返回一个
id
,所以它必须将所有原语包装到Objective-C对象中。在这种情况下,
int
被包装在
NSNumber
对象中

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

int num = [[mySpecialObject valueForKey:@"myVariable"] intValue];
参考文件: