如何在Objective-c中将NSdictionary表示为文字?

Yif*_* Li 2 objective-c

就像:

"APP_INFO" : {
            "v":"2.0",
            "appid":"1",
            "lang":"zh-Hans",
             }
Run Code Online (Sandbox Code Playgroud)

我不能使用init方法,因为它不是编译时常量.

Jos*_*ell 6

从Clang 3.2开始,有可用的文字容器语法:

NSDictionary * d = @{
    @"APP_INFO" :  
    @{
        @"v" : @"2.0",
        @"appid" : @"1",
        @"lang" : @"zh-Hans",
}};
Run Code Online (Sandbox Code Playgroud)

这会创建一个普通的不可变NSDictionary实例,就像使用了alloc/ initWithObjects:forKeys:或任何其他方法一样; 它简直就是很好的语法糖.

有传言称Apple也将很快将其添加到他们的编译器中.


And*_*sen 1

NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"2.0", @"v", @"1", @"appid", @"1", @"zh-Hans", @"lang", nil];
Run Code Online (Sandbox Code Playgroud)

这将创建一个不可变的字典,其内容在编译时是固定的。

您可以使用相同的 init 方法在运行时填充新字典:

id object1 = ...;
...
NSString *key1 = ...;
...

NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:object1, key1, object2, key2, object3, key3, nil];
Run Code Online (Sandbox Code Playgroud)