【问题标题】:Storing ints in a Dictionary在字典中存储整数
【发布时间】:2010-12-14 20:57:40
【问题描述】:

据我了解,在 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 中已经默认了一段时间。 (弧)

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

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

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

dictionary[@"mykey"] = @1337;

更简单。

【问题讨论】:

  • 还可以做dictionary[@"1"] = @1337;

标签: iphone objective-c dictionary integer nsnumber


【解决方案1】:

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

【讨论】:

  • 没关系,我认为没有,所以现在我知道了。谢谢!
【解决方案2】:

如果您准备回退到使用 Core Foundation (CFDictionaries),您可以存储任何您喜欢的内容。我肯定已经制作了字典,可以将任意 void* 值放入其中。

您需要做更多的管道工作,但并不多,而且都记录在案。

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 没关系,我认为没有,所以现在我知道了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-05-28
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    相关资源
    最近更新 更多