据我所知,在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;
简单。
答案 0 :(得分:18)
你是对的,NSNumber
是处理这种情况的正常方法。您也可以使用NSValue
或NSDecimalNumber
。
答案 1 :(得分:5)
如果您准备回归使用Core Foundation(CFDictionaries),您可以存储任何您喜欢的内容。我肯定做了字典,我把任意void *值。
你需要做更多的管道,但不是很多,而且都记录在案。
答案 2 :(得分:0)
抱歉但没有:(据我所知。原因是整数不是对象,而NSDictionary
只存储对象。