斯威夫特:无法将“无法将“__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:]:无法识别的选择器发送到实例错误

__NSCFString setHidden:无法识别的选择器发送到实例

Alamofire 无法将 NSCFString 类型转换为字典