0

我有一个nsmutabeldictionary这样的

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

并想要一个值为 10 的键“ID”,就像

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

请帮忙

4

3 回答 3

1

你只需要调用setObject:forKey

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

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

参数

一个东西

aKey 的值。对对象的强引用由字典维护。如果 anObject 为 nil,则引发 NSInvalidArgumentException。如果您需要在字典中表示一个 nil 值,请使用 NSNull。

关键

价值的关键。密钥被复制(使用 copyWithZone:; 密钥必须符合 NSCopying 协议)。如果 aKey 为 nil,则引发 NSInvalidArgumentException。如果 aKey 已经存在于字典中,则 anObject 将取而代之。

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

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

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

于 2013-06-06T12:51:36.480 回答
1

从您的评论中:

'NSUnknownKeyException',原因:'[<__NSDictionaryI 0x1ede8740> setValue:forUndefinedKey:]:

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

我想您的代码如下所示:

//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"];
于 2013-06-06T13:18:48.047 回答
0

要将具有新键的新对象添加到字典,可以使用 SetObject:forKey 方法。

于 2013-06-06T13:14:04.573 回答