【问题标题】:Add Mutable Dictionary to a Mutable Dictionary for conversion to JSON将可变字典添加到可变字典以转换为 JSON
【发布时间】:2013-06-26 13:07:53
【问题描述】:

我正在尝试构建一个字典,其中包含字典(最终我希望转换为 JSON)。问题是我在构建它时遇到问题。

到目前为止我有这个,它应该做的是用键构建一个小字典并将其添加到一个更大的字典中,重置然后加载小字典,然后将它添加到大字典。

NSMutableDictionary *nestedList = [[NSMutableDictionary alloc]init];   
NSMutableDictionary *nestedSections = [[NSMutableDictionary alloc] init];



[nestedList addEntriesFromDictionary:[NSDictionary dictionaryWithObjectsAndKeys:
                                      [NSNumber numberWithInt:46], @"menuHeight",
                                      @"editText", @"menuMethod",
                                      [NSNumber numberWithInt:1], @"menuOption",
                                      nil]];

[nestedSections addEntriesFromDictionary:[NSDictionary dictionaryWithObjectsAndKeys:
                                          nestedList, "@Basic",

                                          nil]];
[nestedList removeAllObjects];

[nestedList addEntriesFromDictionary:[NSDictionary dictionaryWithObjectsAndKeys:
                                      [NSNumber numberWithInt:92], @"menuHeight",
                                      @"sendText", @"menuMethod",
                                      [NSNumber numberWithInt:1], @"menuOption",
                                      nil]];

[nestedSections addEntriesFromDictionary:[NSDictionary dictionaryWithObjectsAndKeys:
                                          nestedList, "@Pro",

                                          nil]];

然后我希望这样称呼;

NSString *string = [[nestedSections objectForKey:@"Pro"] objectForKey:@"menuMethod"];
NSLog(@"Method is : %@", string);

日志希望读取sendText

第一个字典构建得很好,但是一旦我尝试将它添加到第二个字典中,就会出现 EXC_BAD_ACCESS

我认为这是一个内存寻址问题,因为它们都是可变的,但我不确定,也许 nestedList 不应该是可变的。任何帮助表示赞赏。

最终我想将其转换为 JSON 之类的;

{
   "Basic":
     {
        "menuHeight":"46",
        "menuMethod":"editText",
        "menuOption":"1",
     },
   "Pro":
     {       
        "menuHeight":"96",
        "menuMethod":"sendText",
        "menuOption":"1",
     }
 }

【问题讨论】:

    标签: xcode json cocoa embed nsmutabledictionary


    【解决方案1】:

    A. NSMutableDictionary 不复制值(仅复制键)。因此,您两次添加相同的字典并在删除对象时更改两者(= 一个)等等。除此之外,在您的示例 JSON 中,数字看起来像字符串而不是数字。我认为,这是一个错字。

    B.添加现代 Objective-C 以获得更好的可读性,它应该如下所示:

    NSDictionary *basicDictionary = 
    @{
        @"menuHeight" : @46,
        @"menuMethod" : "editText",
        @"menuOption : @1
    }
    
    NSDictionary *proDictionary = 
    @{
        @"menuHeight" : @96,
        @"menuMethod" : "sendText",
        @"menuOption : @1
    }
    
    NSDictionary *nestedSections = @{ @"Pro" : proDictionary, @"Basic" : basicDictionary };
    

    【讨论】:

    • 非常感谢。这读起来也好多了....是的,JSON 上的错字很好发现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多