用于字典的连接字符串:语法错误

时间:2015-11-30 17:18:13

标签: ios objective-c string syntax

以下代码有条件地连接字典的字符串似乎可以解决我尝试将连接结果放在字典中的问题。任何人都可以看到错误吗?

 NSDictionary *jsonDictionary;
        NSString* dictString = @"@\"first\":first,@\"last"
                NSString *dictString2=dictString;
                if (date.length>0&&![date isKindOfClass:[NSNull class]]) {
//only include this key value pair if the value is not missing 
                    dictString2 = [NSString stringWithFormat:@"%@%s", dictString, "@\"date\":date"];

                }

                jsonDictionary = @{dictString2}; //syntax error. Says expected colon but that does not fix anything

2 个答案:

答案 0 :(得分:0)

使用对象文字创建NSDictionary的语法是:

dictionary = @{key:value}

(并且可选地,它可以包含由逗号分隔的多个键/值对,但现在不用介意。)

其中“key”和“value”都是NSObject s。

抛出错误的行只包含1件事。 dictString2中字符串的内容与它无关。

在我看来,您正在尝试手动构建JSON字符串。不要那样做。使用NSJSONSerialization。该类有一个方法dataWithJSONObject,它以NSObject作为输入,并返回包含NSData字符串的JSON。这就是你应该如何创建JSON输出。

答案 1 :(得分:0)

使用可能为null的值创建NSDictionary:

NSDictionary *dict = @{
                       @"key" : value ?: [NSNull null],
                      };

序列化字典时,{J}中的NSNull被翻译为null

如果您想完全排除这些密钥,而不是让它们具有null值,那么您将需要做更多的工作。最简单的方法是使用NSMutableDictionary并在添加之前测试每个值。