在字典中存储整数

Eth*_*ick 13 iphone dictionary integer objective-c nsnumber

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

SOO ...

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];
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

编辑:04/25/13

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

NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
[dictionary setObject:@1337 forKey:@"1"];
Run Code Online (Sandbox Code Playgroud)

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

[dictionary setObject:@(varMoney) forKey:@"3"];
Run Code Online (Sandbox Code Playgroud)

要么

dictionary[@"mykey"] = @1337;
Run Code Online (Sandbox Code Playgroud)

简单.

Car*_*rum 18

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


小智 5

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

你需要做更多的管道,但不是很多,并且所有记录.