如何在NSMutableDictionary中增加键

时间:2013-09-07 21:54:57

标签: objective-c

我正在尝试将对象分配给NSMutableDictionary,其中对象的键递增但我继续将值2指定为键。每次将对象保存到词典时,如何增加键?

这是我的方法:

 -(void)addToMutableDictionary:(NSString*)value
 {
     //declare variable
     int keyNum = 1;

     keyNum +=1;

     NSNumber *number = [NSNumber numberWithInt: keyNum];
     int numToInc = [number intValue];
     number = [NSNumber numberWithInt:numToInc];

     //Then I'm adding to the Dictionary:

     [dictionary setObject:value forKey:number];
}

我的输出总是:

密钥的编号始终为2.

- - - - >我是如何让它工作的

// declare variable outside so that's its incremented and not reset to
// 0 every time the function is executed.
int keyNum = 0;


-(void)addToMutableDictionary:(NSString*)value
{



        keyNum +=1;

        NSNumber *number = [NSNumber numberWithInt: keyNum];
        int numToInc = [number intValue];
        number = [NSNumber numberWithInt:numToInc];

        //Then I'm adding to the Dictionary:

        [dictionary setObject: object forKey:number];
    }

4 个答案:

答案 0 :(得分:3)

我会尽力帮助你,但我不确定我会有多成功。你在这里的问题是你总是用值1开始你的键。然后你增加那个最终为2的值。你试图以几种不同的方式递增它,但无论如何,无论你增加它,它总是1。

我不完全确定你要完成什么,但我建议你在字典中使用两个不同的键来跟踪你想要的'对象'和'递增键'。

不是递增键,而是递增一个值:

dictionary[@"number"] = @1;

并存储您想要的object

dictionary[@"object"] = object;

然后当你想增加数字时,就这样做:

dictionary[@"number"] = @([dictionary[@"number"] intValue] + 1);

这将增加你的价值,它总会向上移动,而不是总是保持2.我希望这是有道理的。

密钥用于访问数据。增加密钥似乎是对其目的的滥用(一般而言)。如果密钥增加了几次,则很难获得该值,因为您不知道新密钥是什么,使您无法访问对象。通过这种方式,您可以始终获得新增加的数字,因为您知道它的键是“数字”。

答案 1 :(得分:1)

你在做:

int origNumber = 1;
origNumber+=1;

这使origNumber始终为2,因此实际上没有任何增加。这就是为什么你的词典将具有键2而不是你期望的任何词。

在另一个注释中,即使您实际上是在递增密钥,旧的键值配对仍然存在(因此您的字典将具有一个键值2的键值对,另一个键值与键除非您删除旧的键值对,否则3除外。

答案 2 :(得分:1)

我认为,你想要的是一个简单的代码,但似乎你让它变得复杂。我假设你的要求是将一些object(我不知道它是相同的obj还是不同)存储到具有不同键的字典中。如果我的假设是正确的,那么你可以这样做:

for(int index=1; index<100; index++){
    NSNumber *number = [NSNumber numberWithInt:index];         
    [dictionary setObject: object forKey:number];
}

答案 3 :(得分:0)

    int origNumber =0;


-(void)methodToIncrementKey
{
    origNumber+=1;
    NSNumber *number = [NSNumber numberWithInt:origNumber];
    int numToInc = [number intValue];
    number = [NSNumber numberWithInt:numToInc];

    //Then I'm adding to the Dictionary:

    [dictionary setObject: object forKey:number];
}

我不得不将键变量放在函数之外。