斯威夫特:无法将“无法将“__NSCFString”(0x10e4d5ef0)类型的值转换为“NSDictionary”(0x10e4d6bc0)类型的值。
Posted
技术标签:
【中文标题】斯威夫特:无法将“无法将“__NSCFString”(0x10e4d5ef0)类型的值转换为“NSDictionary”(0x10e4d6bc0)类型的值。【英文标题】:Swift: Could not cast value of type 'Could not cast value of type '__NSCFString' (0x10e4d5ef0) to 'NSDictionary' (0x10e4d6bc0).' 【发布时间】:2017-07-19 07:24:37 【问题描述】:我正在尝试在字典中获取帖子数据。首先让我展示一下我在做什么。
manager.POST(url, parameters: dict,
success: (operation: AFHTTPRequestOperation!, responseObject: AnyObject!) in
if let jsonDict = self.parseJSON(responseObject)
print(jsonDict)
// Error occur on the following line
let dataDict = jsonDict["data"] as! [String : AnyObject]
// Error Info: Swift: Could not cast value of type 'Could not cast value of type '__NSCFString' (0x10e4d5ef0) to 'NSDictionary' (0x10e4d6bc0).'
ParseJson 函数:
func parseJSON(inputData: AnyObject) -> Dictionary<String,AnyObject>?
do
let jsonDict = try NSJSONSerialization.JSONObjectWithData(inputData as! NSData, options:NSJSONReadingOptions.MutableContainers) as! Dictionary<String,AnyObject>
// use jsonData
return jsonDict
catch let error as NSError
// report error
print(error.description)
print("Session: Json Parse Error!!!")
return nil
这是 pirnt(jsonDict) 的结果
[数据:"session_id":"ab4kn9fj34ko89kjkl5ljs98gfk498fgkl409alk34l","user_info":"用户名":"Johny Cage","ENCPASSWORD":"johnycage","id":1,"FULLNAME":"Johny Cage ",状态:成功]
非常感谢任何帮助或建议。
【问题讨论】:
我从帖子中尝试过,但给定的解决方案导致我的代码出现另一个错误。链接:***.com/questions/39652661/… ***.com/questions/38831641/… 上的答案对我也不起作用。 可以添加函数parseJSON的代码吗? 尝试做if let data = json["data"] as? String print(data)
看看会返回什么,因为它认为你返回的是一个字符串
【参考方案1】:
从网络服务检查您的退货数据。我认为您在 Jason String 中多次转换它,或者类似的东西。上面的代码没有问题。检查您的服务器端。
【讨论】:
谢谢您,先生,这是您第二次拯救我的一天。是的,正如你提到的,我的客户端有一些额外的东西。非常感谢。以上是关于斯威夫特:无法将“无法将“__NSCFString”(0x10e4d5ef0)类型的值转换为“NSDictionary”(0x10e4d6bc0)类型的值。的主要内容,如果未能解决你的问题,请参考以下文章
无法将'__ NSCFString'类型的值转换为'NSData'
如何解决此错误:无法将类型“__NSCFString”(0x10354a248)的值转换为“UIImage”(0x104c42b48)
[__NSCFString name]:发送到实例的无法识别的选择器
[__NSCFString objectAtIndex:]:无法识别的选择器发送到实例错误