在NSDictionary中设置NSDictionary的值

Pad*_*215 0 objective-c ios

我有一个字典作为另一个字典的值:

10 = {
        createdate = "2012-03-20 15:04:09.125177-05";
     }
Run Code Online (Sandbox Code Playgroud)

我想为内部字典设置一个值,而不必将它拉出来,但是

[NSDicionary setObject:forKey:]
Run Code Online (Sandbox Code Playgroud)

只有一个深入.我可以添加另一个键吗?我试过了

[[NSDicionary setObject:forKey:]forKey:]
Run Code Online (Sandbox Code Playgroud)

但xCode不喜欢这样.

有任何想法吗?

yuj*_*uji 14

假设您的词典是可变的,您可以使用:

[[yourDictionary objectForKey:@"10"] setObject:newDate forKey:@"createdate"]];
Run Code Online (Sandbox Code Playgroud)

要了解它是如何工作的,请注意它等同于:

NSMutableDictionary *innerDict = [someDictionary objectForKey:@"10"];
[innerDict setObject:newDate forKey:@"createdate"]];
Run Code Online (Sandbox Code Playgroud)

如果你的词典不可变,你需要做更多的工作.首先,如果外部字典不可变:

yourDictionary = [yourDictionary mutableCopy];
Run Code Online (Sandbox Code Playgroud)

如果内部字典不可变:

NSMutableDictionary *newInnerDict = [[yourDictionary objectForKey:@"10"] mutableCopy];
[newInnerDict setObject:newDate forKey:@"createdate"]];
[yourDictionary setObject:newInnerDict forKey:@"10"];
Run Code Online (Sandbox Code Playgroud)