为啥 NSDictionary 在使用 dictionaryWithObjectsAndKeys 时有时会删除引号?

Posted

技术标签:

【中文标题】为啥 NSDictionary 在使用 dictionaryWithObjectsAndKeys 时有时会删除引号?【英文标题】:Why does NSDictionary sometimes remove quotes when using dictionaryWithObjectsAndKeys?为什么 NSDictionary 在使用 dictionaryWithObjectsAndKeys 时有时会删除引号? 【发布时间】:2014-05-05 22:20:02 【问题描述】:

我有下面这行代码...

NSDictionary *visitDict = [NSDictionary dictionaryWithObjectsAndKeys:self.room.roomId, @"room_id", self.datePicker.date, @"date", nil];

输出这个结果...

Dict: 
    date = "2014-05-05 22:15:02 +0000";
    "room_id" = 12;

room_id 有引号,但 date 没有。

如果我称它为 date_a,它周围会有引号。但日期没有。我无法逃脱第一行代码是

NSDictionary *visitDict = [NSDictionary dictionaryWithObjectsAndKeys:self.room.roomId, @"room_id", self.datePicker.date, @"\"date\"", nil];    

要么是因为那样我就结束了。

Dict: 
    "\"date\"" = "2014-05-05 22:18:33 +0000";
    "room_id" = 6;

什么给了?我需要围绕这个键的引号,我该如何实现?

【问题讨论】:

【参考方案1】:

在您发布的第一行代码中,实际上没有一个值包含任何引号。

当您记录 NSDictionary 时,如果键/值包含空格、下划线或其他特殊标点符号,则值只会出现在引号中。

在您发布的第二行代码中,您的“日期”键实际上在键值中有引号。

当您记录该字典时,这些引号与反斜杠一起显示(尽管反斜杠实际上不在字符串中),并且由于该值具有一些特殊字符,因此它显示在引号中。

澄清一下,NSDictionary 从不删除任何内容。

【讨论】:

好的,所以如果我将此评论发布到需要引号的 Rails 后端,这一切都会得到处理? 什么评论?现在你问的是一个与你原来的问题无关的完全独立的问题。 即使我遇到同样的问题,我也需要带引号的参数才能从服务器获得正确的响应。任何想法

以上是关于为啥 NSDictionary 在使用 dictionaryWithObjectsAndKeys 时有时会删除引号?的主要内容,如果未能解决你的问题,请参考以下文章

NSDictionary 的描述 - 为啥有些键名带有引号?

NSDictionary,这是为啥

为啥我得到“[__NSArrayI allKeys]:无法识别的选择器发送到实例”/为啥 NSDictionary 正在转换?

为啥我得到“[__NSArrayI allKeys]:无法识别的选择器发送到实例”/为啥 NSDictionary 正在转换?

为啥 NSJSONSerialization 将 NSDictionary 错误地解析为 JSON?

Swift iOS NSDictionary setValue 崩溃 - 但为啥?