更新nsmutableDictionary插入一个新密钥

时间:2013-06-06 12:43:42

标签: objective-c nsmutabledictionary

我有nsmutabeldictionary这样的

   {
        alert = "test from dot net";
        badge = 1;
        sound = default;
    }

并想要一个值为10的密钥'ID',就像

一样
     {
        alert = "test from dot net";
        badge = 1;
        sound = default;
        ID  = 10;
    }

请帮助

3 个答案:

答案 0 :(得分:1)

您只需致电setObject:forKey

  

将一个给定的键值对添加到字典中。

- (void)setObject:(id)anObject forKey:(id < NSCopying >)aKey 
     

<强>参数

     

anObject

     

aKey的值。强烈提及   对象由字典维护。提高了   如果anObject为nil,则为NSInvalidArgumentException。如果你需要   表示字典中的nil值,使用NSNull。

     

aKey

     

关键   值。密钥被复制(使用copyWithZone:;密钥必须符合   NSCopying协议)。如果是aKey,则引发NSInvalidArgumentException   没有。如果字典中已存在aKey,则anObject接受它   的地方。

在您的示例中,您可以这样称呼它:

[yourMutableDictionary setObject:[NSNumberWithInt:10] forKey:@"ID"]

另外,请记住你必须传递一个NSObject。因此,您应该使用[NSNumberWithInt:10]而不是10

答案 1 :(得分:1)

来自你的评论:

  

'NSUnknownKeyException',原因:'[&lt; __ NSDictionaryI 0x1ede8740&gt;的setValue:forUndefinedKey:]:

看起来你实际上有一个不可变的字典(注意我的后缀)。

我想你的代码看起来像这样:

//Even though you are assigning to a mutable object
//The method may not return an mutable dictionary
NSMutableDictionary *d = [someObject getDictionary]; 

您应该使用:

NSMutableDictionary *d = [NSMutableDictionary dictionaryWithDictionary:[someObject getDictionary]];

然后你可以舒服地使用:

[d setObject:@10 forKey:@"ID"];

答案 2 :(得分:0)

要使用新的Key to Dictionary添加新对象,可以使用SetObject:forKey Method。