在字典中存储整数

时间:2009-11-10 01:12:04

标签: iphone objective-c dictionary integer nsnumber

据我所知,在Objective-C中,您只能将对象放入词典中。因此,如果我要创建一个字典,它必须拥有所有对象。这意味着我需要把我的注意力作为NSNumber,对吗?

...洙

NSNumber *testNum = [NSNumber numberWithInt:varMoney];


NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
[dictionary setObject:@"OMG, Object 1!!!!" forKey:@"1"];
[dictionary setObject:@"Number two!" forKey:@"2"];
[dictionary setObject:testNum forKey:@"3"];


NSNumber *retrieved = [dictionary objectForKey:@"3"];
int newVarMoney = [retrieved intValue];

其中varMoney是先前声明的int。我的问题是,有没有更好的方法将“int”存储在字典中而不是将其放入NSNumber中?

谢谢!

编辑:2013年4月25日

我问这个问题已经很久了。对于将来遇到困难的人来说,有更简单的方法可以使用Apple LLVM Compiler 4.0,它在Xcode中默认为一点。 (ARC)

NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
[dictionary setObject:@1337 forKey:@"1"];

就是这样,使用@ 1337语法快速创建NSNumber对象。使用变量,所以我的上面可能变成:

[dictionary setObject:@(varMoney) forKey:@"3"];

dictionary[@"mykey"] = @1337;

简单。

3 个答案:

答案 0 :(得分:18)

你是对的,NSNumber是处理这种情况的正常方法。您也可以使用NSValueNSDecimalNumber

答案 1 :(得分:5)

如果您准备回归使用Core Foundation(CFDictionaries),您可以存储任何您喜欢的内容。我肯定做了字典,我把任意void *值。

你需要做更多的管道,但不是很多,而且都记录在案。

答案 2 :(得分:0)

抱歉但没有:(据我所知。原因是整数不是对象,而NSDictionary只存储对象。