我是Obj-C的新手,所以这可能是个明显的问题。
我正在添加10个数字作为NSMutableDictionary的键,其值为0。像这样的东西 -
for( i=1; i<10; i++)
{
[dict setObject:[NSNumber numberWithInt:0] forKey:[NSNumber numberWithInt:i]];
}
现在,在代码的后一点,我想获取为密钥号存储的对象并获取其值。在这种情况下,例如对于数字3作为键,我们存储了值0.为此,我使用此代码 -
id numberObj = [game objectForKey:[NSNumber numberWithInt:3]];
int numberObjValue = ????
我在调试器中看到id指向0.但是我不知道如何将它变成我声明的整数变量。希望这是有道理的。
我打印numberObj并按预期打印一些地址。如何将此通用ID转换为NSNumber并随后将其存储在numberObjValue中?
答案 0 :(得分:0)
您可以从字典中获取该号码,然后使用int
将其存储在intValue
中:
NSNumber *numberObj = (NSNumber *)[game objectForKey:[NSNumber numberWithInt:3]];
int numberObjValue = [numberObj intValue];
或者,您可以使用一行:
int numberObjValue = [[game objectForKey:[NSNumber numberWithInt:3]] intValue];
答案 1 :(得分:0)
id
不是数据类型。它很简单意味着它可以返回任何对象类型。如果您确定已插入NSNumber
,则只需将其值变为 NSNumber
。
NSNumber* myNumber = [myDict objectForKey:key];
那就是它。如果您想确保实际返回NSNumber
,请使用isKindOfClass:
。
答案 2 :(得分:0)
该对象已经是NSNumber。你放了一个NSNumber,你得到了一个NSNumber。无需转换。您可以将其分配给NSNumber变量,但该对象不会更多或更少是NSNumber。因此,您不需要将其转换为NSNumber,并且您可以按照通常的方式获取数字的整数值。