无法将“__NSArrayM”类型的值转换为“NSDictionary”
Posted
技术标签:
【中文标题】无法将“__NSArrayM”类型的值转换为“NSDictionary”【英文标题】:Could not cast value of type '__NSArrayM' to 'NSDictionary' 【发布时间】:2015-11-06 18:42:03 【问题描述】:我有一个 json。我正在尝试用该代码解析它。但它说
do
let dataDictionary: NSDictionary = try NSJSONSerialization.JSONObjectWithData(responseObject as! NSData, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary // <------ Error
if let customerArray = dataDictionary.valueForKey("cart") as? NSArray
for js in customerArray
let nameArray = js.valueForKey("name")
let idArray = js.valueForKey("id")
感谢您的帮助
【问题讨论】:
看起来您的响应对象包含一个数组,而不是字典。你能显示json吗? 【参考方案1】:数据中的根对象是一个数组,而不是一个对象(字典)。
您需要根据反序列化的对象动态决定如何处理您的 JSON。
【讨论】:
【参考方案2】:它告诉您的是,您正在解析的 JSON 对象不是字典,而是一个数组。因此,如果您更改它以将其值视为数组而不是字典,您将能够对其进行迭代。
您需要重新评估您的 JSON 以确保其结构符合您的想法。如果您发布了您尝试解析的 JSON,这也会很有用,以便我们也可以看到它的结构。
【讨论】:
以上是关于无法将“__NSArrayM”类型的值转换为“NSDictionary”的主要内容,如果未能解决你的问题,请参考以下文章
Swift JSON 错误,无法将类型“__NSArrayM”(0x507b58)的值转换为“NSDictionary”(0x507d74)
Swift 2.0:无法将类型“__NSArrayM”(0x10a9348d8)的值转换为“NSDictionary”(0x10a934d60)
[__NSArrayM objectAtIndex:]: 索引 2 超出范围 [0 .. 1]'
在映射集合时快速获取异常“所需类型 = NSOrderedSet;给定类型 = __NSArrayM”
“[__NSArrayM objectForKey:]:无法识别的选择器”尝试从字典中检索字符串时
[__NSArrayM getFileSystemRepresentation:maxLength:]: 无法识别的选择器发送到实例