NSMutableDictionary 正在为键和值添加引号 - 为啥?

Posted

技术标签:

【中文标题】NSMutableDictionary 正在为键和值添加引号 - 为啥?【英文标题】:NSMutableDictionary is adding quotes to keys and values - why?NSMutableDictionary 正在为键和值添加引号 - 为什么? 【发布时间】:2010-03-18 16:07:58 【问题描述】:

我正在尝试向 NSMutableDictionary 添加一些额外的键/值对,使用:

Tag *tag1 = [results1 objectAtIndex:0];
[resultsDict setObject:[tag1 retrieveTextUpToDepth:1] forKey:@"image_url"];

Tag *tag2 = [results2 objectAtIndex:0]; 
[resultsDict setValue:[tag2 retrieveTextUpToDepth:1] forKey:@"majority"];

这会毫无问题地添加 k/v 对,除非我来检索它们时,某些值已用双引号括起来:

po extendedDataDictionary:

    "image_url" = "/images/mpsL/11727.jpeg";
    majority = 3460;

键和值都是 NSStrings,没有引号 - 所以我很难理解它们是从哪里出现的。

有什么办法可以预防吗?

或者我是否必须忍受它并在检索到值后尝试去掉引号?

谢谢...

【问题讨论】:

如果您在代码中(printf 或 NSLog)而不是通过 gdb 打印它们会得到什么 通过 NSLog 是一样的:2010-03-18 21:08:24.312 Conflict[49224:40b] extendedDataDictionary = "image_url" = "/images/mpsL/13735.jpeg";多数 = 2484;摆动=“4.6”; "vulnerability_cohort" = 643; “漏洞等级”= 488;所有的值都来自同一个 XML 提要,并且 image_url 字段中绝对没有引号...... 【参考方案1】:

引号并不是内容的一部分; -description 方法(由 po,IIRC 调用)只是将包含非字母数字字符的内容用引号括起来。

【讨论】:

此外,-description 方法的输出不应用于除调试之外的任何用途。 @bbum 很难学到这一点。几个小时以来,我一直坚信 NSDictionaries 无法打印 unicode 字符...最终是 description 删除了它们 D: @Wevah :它带有特殊字符的精细值用双引号括起来,但是如果说密码字段必须有一个特殊字符,那么 API 调用会因为这个不需要的双引号而失败。如何防止 -description 方法将该双引号包装到特定字段.. 您不应该使用 -description 来传递给 API。【参考方案2】:

加上它,你可以使用忽略引号的键或值,应该没问题..

【讨论】:

以上是关于NSMutableDictionary 正在为键和值添加引号 - 为啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 JSON 属性值转换为键和值数组

为键和项目编写类型提示的正确方法

如何在 NSMutableDictionary 中保留部分分数

从ios中的nsmutableDictionary中删除一个键

如何在使用 Scala-Play Json 框架解析 Json 时获取键和值?

数组字典和集合的定义