let voicemailFiles = voicemail.value( forKey: "voicemail") as! [AnyObject]
// Could not cast value of type '__NSDictionaryI' (0x10ca8a228) to 'NSArray' (0x10ca89d78)
let voicemailFiles = voicemail.value( forKey: "voicemail") as! [String : String]
// Could not cast value of type '__NSArrayI' (0x104df9448) to 'NSDictionary' (0x104df7fa8).当尝试将JSON (如下面所示)放入变量中时,我碰到了"voicemail"的2种转换方法的上述错误。
let config = voicemail.value(forKey: "config") as AnyObject配置键的这一行工作得很好。
voicemail的变量是键voicemailboxes的[AnyObject]值。
{
"voicemailboxes": [
{
"config": {
"id": "5",
"description": "Test"
},
"voicemail": [
{
"id": "id001",
"caller": "...",
"caller_UK": "...",
"called": "+...",
"called_UK": "...",
"received": "...",
"duration_seconds": "..."
},
{
"id": "id002",
"caller": "...",
"caller_UK": "...",
"called": "..."
}
]
}
]
}发布于 2017-10-23 13:10:26
根据您的JSON,很明显
voicemailboxes是[[string:Any]] (字典阵列)和
voicemail是[[String:String]] (字典阵列)
注意::检查正确响应所需的guard或if let只是一个例子
你可以像
((dictMain["voicemailboxes"] as! [[String:Any]]).first!["voicemail"] as! [[String:Any]])
希望这对你有帮助
发布于 2017-10-23 12:10:05
语音信箱是一组字典。
语音信箱也是一系列字典。
需要对它们进行适当的解析。在操场上:
let json = """
{
"voicemailboxes": [
{
"config": {
"id": "5",
"description": "Test"
},
"voicemail": [
{
"id": "id001",
"caller": "...",
"caller_UK": "...",
"called": "+...",
"called_UK": "...",
"received": "...",
"duration_seconds": "..."
},
{
"id": "id002",
"caller": "...",
"caller_UK": "...",
"called": "..."
}
]
}
]
}
"""
let data = json.data(using: .utf8)!
let jsonDict = try! JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.allowFragments) as! [String:Any]
let voicemailboxes = jsonDict["voicemailboxes"] as! [Any]
let voicemailboxesfirst = voicemailboxes.first as! [String:Any]
let voicemail = voicemailboxesfirst["voicemail"] as! [Any]
let voicemailfirst = voicemail.first as! [String:Any]
print(voicemailfirst)输出:
“接收”:.,“呼叫”::+.,"id":id001,"caller_UK":.,"duration_seconds":.,“来电者”:.,"called_UK":.
发布于 2017-10-23 12:12:28
使用以下代码
if let any = voicemail.value( forKey: "voicemail") {
if let tmpArray = any as? Array {
let voicemailFiles = tmpArray
}
}https://stackoverflow.com/questions/46888832
复制相似问题