我正在尝试将对象分配给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];
}
答案 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];
}
我不得不将键变量放在函数之外。