NSDictionary 里面的 NSDictionary

Posted

技术标签:

【中文标题】NSDictionary 里面的 NSDictionary【英文标题】:NSDictionary Inside An NSDictionary 【发布时间】:2012-05-17 11:10:07 【问题描述】:

我有以下代码:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSMutableDictionary *golferIconsu = [userDefaults objectForKey:@"golferIconsFirstScene"];

NSMutableDictionary *golferIconsSceneOne = [[NSMutableDictionary alloc]initWithDictionary:golferIconsu];

NSMutableDictionary *savedScoreCards;

NSMutableDictionary *currentScoreCard;
[currentScoreCard setObject:golferIconsSceneOne forKey:@"golferIconsFirstScene"];

NSMutableDictionary *GI = [currentScoreCard objectForKey:@"golferIconsFirstScene"];

[savedScoreCards setObject:currentScoreCard forKey:@"1"];

NSLog([golferIconsSceneOne objectForKey:@"30101"]);
NSLog([GI objectForKey:@"30101"]);

最后,在我的日志中打印出来的是第一个NSLog 调用,而不是第二个。例如:

NSLog([golferIconsSceneOne objectForKey:@"30101"]);

这会打印出我存储在该字典中的字符串。

这个:

NSLog([GI objectForKey:@"30101"]);

根本不打印任何东西。

如何使NSDictionary GI 具有与golferIconsSceneOne 完全相同的属性,但我需要使用包含golferIconsSceneOnecurrentScoreCardDictionary 来做到这一点?

【问题讨论】:

你还没有为 savedScoreCards 和 currentScoreCard 分配内存??它是如何工作的 无论你使用什么,你都必须分配它。 你能发布答案,告诉我如何分配我需要分配的变量。 【参考方案1】:

在设置对象之前初始化你的字典。

NSMutableDictionary *savedScoreCards = [[NSMutableDictionary alloc] init];
NSMutableDictionary *currentScoreCard = [[NSMutableDictionary alloc] init];

【讨论】:

是的,currentScoreCard 是 nil,所以 GI 将是 nil[GI objectForKey.. 在你执行 NSLog 时不会打印任何东西 Hot Licks 只有类成员被初始化为 nil 所以根据我的说法它应该崩溃.. 但我不知道它是如何工作的【参考方案2】:

像这样初始化一个并将其设置为另一个

NSMutableDictionary *savedScoreCards = [[NSMutableDictionary alloc] init];
NSMutableDictionary *currentScoreCard = [[NSMutableDictionary dictionaryWithDictionary:savedScoreCards];

【讨论】:

以上是关于NSDictionary 里面的 NSDictionary的主要内容,如果未能解决你的问题,请参考以下文章

带有 JSON 格式字符串的文件,如何将文件内容读入 NSDictionary

如何设置 twilio 通话记录?

NSDictionary 里面的 NSDictionary

NSDictionary 里面的 NSDictionary

字典NSDictionary和NSMutableDictionary的使用

需要帮助从 NSDictionary 设置单元格的 TextLabel