-4

我正在尝试将对象分配给 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

4 回答 4

3

我会尽力帮助你,但我不确定我会取得多大的成功。您的问题是您始终以值 1 开始您的密钥。然后您增加该值,最终为 2。您尝试以几种不同的方式增加它,但无论如何,无论您如何增加它,它都将始终为 1。

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

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

dictionary[@"number"] = @1;

并存储object您想要的:

dictionary[@"object"] = object;

然后,当您想增加数字时,只需执行以下操作:

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

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

密钥旨在访问数据。增加一个键似乎是对其目的的滥用(通常)。如果键增加了几次,您将很难获得值,因为您不知道新键是什么,从而使您无法访问您的对象。这样,您始终可以获得新的递增数字,因为您知道它的键是“数字”。

于 2013-09-07T22:24:51.800 回答
1

你正在做:

int origNumber = 1;
origNumber+=1;

这使得它origNumber始终为 2,因此实际上没有增加任何内容。这就是为什么您的字典将拥有密钥2而不是您期望的任何内容。

在另一个注释中,即使您实际上是在增加键,旧的键值对仍然存在(例如,您的字典将有一个带有 key 的键值对2和另一个带有 key 的键值3对),除非您删除旧的键值对。

于 2013-09-07T22:16:20.847 回答
1

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

for(int index=1; index<100; index++){
    NSNumber *number = [NSNumber numberWithInt:index];         
    [dictionary setObject: object forKey:number];
}
于 2013-09-08T03:02:00.087 回答
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];
}

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

于 2013-09-08T08:06:49.057 回答