在字典中存储整数

13

据我所知,在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];

如果之前已经声明了一个 int 类型的 varMoney,我的问题是,是否有比将其放入 NSNumber 中更好的方式来存储“int”类型的值在字典中?

谢谢!

编辑:04/25/13

我提出这个问题已经有很长时间了。对于未来会遇到此类问题的人来说,目前有更简单的方法可以使用苹果 LLVM 编译器 4.0(ARC)来实现。

NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
[dictionary setObject:@1337 forKey:@"1"];
那就这样了,使用 @1337 语法可以快速创建 NSNumber 对象。它可以与变量一起使用,因此我的示例可以变成这样:
[dictionary setObject:@(varMoney) forKey:@"3"];
或者
dictionary[@"mykey"] = @1337;
更简单。

2
您还可以使用字典[@"1"] = @1337; 进行操作。 - JuJoDi
3个回答

18

你说得对,NSNumber 是处理这种情况的正常方式。你也可以使用 NSValue 或者 NSDecimalNumber


1
没关系,我也没有想过会有,现在我知道了。谢谢! - Ethan Mick

5

如果你准备回到使用Core Foundation(CFDictionaries),你可以存储任何你想要的东西。我曾经制作过字典,其中放置了任意的void*值。

你需要做更多的管道工作,但不需要太多,而且所有的文档都有记录。


0

很抱歉,不行 :( 据我所知是不行的。原因是整数不是对象,而NSDictionary只能存储对象。


没关系,我也没有想过会有,现在我知道了。谢谢! - Ethan Mick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接