我怀疑这是非常简单的事情,但我正在尝试获取一个我存储在字典中的int,我正在使用的是这个..
int mapX = [NSNumber numberWithInt:[templateObject valueForKey:@"mapX"]];
Run Code Online (Sandbox Code Playgroud)
但它给了我错误......
指向整数转换的指针不兼容将'id'发送到'int'类型的参数
和
指向整数转换的指针不兼容,使用类型为"NSNumber*"的表达式初始化"int";
如果我试试......
NSNumber *mapX = [NSNumber numberWithInt:[templateObject valueForKey:@"mapX"]];
Run Code Online (Sandbox Code Playgroud)
我基本上得到了同样的错误.我知道我可能只是使用了错误的语法,但我不确定如何编写它.
谢谢你的帮助.
WDU*_*DUK 38
几点:
[NSNumber numberWithInt:[templateObject valueForKey:@"mapX"]];
返回一个NSNumber*,你试图存储在int中.
NSNumber* mapX = [NSNumber numberWithInt:[templateObject valueForKey:@"mapX"]];
也不会工作,因为[templateObject valueForKey:@"mapX"]不是int.您只能存储对象NSDictionary,而不能存储基本类型.
您可能想尝试(假设我的类型正确)
NSNumber* mapXNum = [templateObject valueForKey:@"mapX"];
int mapX = [mapXNum intValue];
Run Code Online (Sandbox Code Playgroud)
int mapX = (int)[[templateObject valueForKey:@"mapX"] integerValue];
Run Code Online (Sandbox Code Playgroud)
上述解决方案假设 templateObject valueForKey:@"mapX" 返回一个 NSNumber。如果不是,并且您想将其转换为 NSNumber,请改用此解决方案:
int mapX = (int)[(NSNumber *)[templateObject valueForKey:@"mapX"] integerValue];
Run Code Online (Sandbox Code Playgroud)
ObjC 中的类型转换是最糟糕的。
| 归档时间: |
|
| 查看次数: |
32976 次 |
| 最近记录: |