使用NSMutableDictionary中从getObject返回的对象

时间:2014-07-27 07:26:55

标签: ios objective-c nsmutabledictionary

我是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中?

3 个答案:

答案 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,你得到了一个N​​SNumber。无需转换。您可以将其分配给NSNumber变量,但该对象不会更多或更少是NSNumber。因此,您不需要将其转换为NSNumber,并且您可以按照通常的方式获取数字的整数值。