Xcode 将可变字典添加到可变字典以转换为JSON

Xcode 将可变字典添加到可变字典以转换为JSON,xcode,json,cocoa,embed,nsmutabledictionary,Xcode,Json,Cocoa,Embed,Nsmutabledictionary,我正在尝试构建一个包含as字典的字典(最终我希望转换成JSON)。问题是我在建造它时遇到了问题 到目前为止,我有这个,它应该做的是建立一个带键的小字典,并将其添加到一个更大的字典,重置,然后加载小字典,然后将其添加到大字典 NSMutableDictionary *nestedList = [[NSMutableDictionary alloc]init]; NSMutableDictionary *nestedSections = [[NSMutableDictionary alloc]

我正在尝试构建一个包含as字典的字典(最终我希望转换成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_访问权限破坏

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

最终,我想将其转换为类似JSON的格式

{
   "Basic":
     {
        "menuHeight":"46",
        "menuMethod":"editText",
        "menuOption":"1",
     },
   "Pro":
     {       
        "menuHeight":"96",
        "menuMethod":"sendText",
        "menuOption":"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上的打字错误被发现了。