如何在nsdictionary键中添加引号?

时间:2014-10-21 01:49:18

标签: ios objective-c nsdictionary

我需要为control_text值添加双引号。但是,即使反斜杠适用于字符串,它也不适用于NSDictionary值。有办法处理以下情况吗?

NSDictionary *createText =  @{ @"text": @[ @{ @"type": @"control_text" , @"text": @"text" }]};

这是我的日志:

{
    text = (
        {
            text = text;
            type = "control_text";
        }
    );
 }

2 个答案:

答案 0 :(得分:0)

NSDictionary个键可以包含引号,它们只需要转义:

NSDictionary *d = @{@"\"n\"" : @"v"};
NSLog(@"d: %@", d);
NSLog(@"n1: %@", d[@"\"n\""]);
NSLog(@"n2: %@", d[@"n"]);

输出:

d: {
    "\"n\"" = v;
}

n1: v

n2: (null)

但一般来说,在键上添加引号是没有意义的。

不要被NSLog()混淆,它会使用description方法添加引号和反斜杠,以便Apple开发人员喜欢这种方式。

夫特:

let d1 = ["n" : "v"]      // ["n":"v"]
let d2 = ["\"n\"" : "v"]  // [""n"":"v"]

答案 1 :(得分:0)

NSLog显示为:

{
    text = (
        {
            text = text;
            type = "control_text";
        }
    );
 }

转换为JSON时,将显示为:

{
    "text":[
        {
            "text":"text",
            "type":"control_text"
        }
    ]
 }

假设您的目标是生成JSON,则无需添加更多引号。