Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 得到一个错误,说“我不知道”;由「;“字符串”;对于不相关的类型,NSDictionary总是失败;。我得到一个线程1:EXC\u BAD\u指令_Swift_Alamofire - Fatal编程技术网

Swift 得到一个错误,说“我不知道”;由「;“字符串”;对于不相关的类型,NSDictionary总是失败;。我得到一个线程1:EXC\u BAD\u指令

Swift 得到一个错误,说“我不知道”;由「;“字符串”;对于不相关的类型,NSDictionary总是失败;。我得到一个线程1:EXC\u BAD\u指令,swift,alamofire,Swift,Alamofire,我在let jsonData=result上得到一个错误!词典行。任何可能的方法来帮助我解决这个问题 @objc func registerUser(button: UIButton) { //Creating parameters for post request let parameters: Parameters = ["username": userName.text!, "password": passWord.text!, "email": emailField.t

我在let jsonData=result上得到一个错误!词典行。任何可能的方法来帮助我解决这个问题

@objc func registerUser(button: UIButton) {

    //Creating parameters for post request
    let parameters: Parameters = ["username": userName.text!, "password": passWord.text!, "email": emailField.text!, "name": nameField.text!]

    //Sending http post request
    Alamofire.request(urlUserRegister, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseString {

        response in
        //printing response
        print(response)

        //getting the json value from the server
        if let result = response.result.value {

            //Convert as NSDictionary
            let jsonData = result as! NSDictionary //This is where the error occcurs

            //displaying the message in label
            self.messageLabel.text = jsonData.value(forKey: "message") as? String
        }
    }
}

删除
responseString
并改为放置
responseJSON

Alamofire.request(urlUserRegister, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseJSON {

    if let result = response.result.value as? [String:Any] {

        if let message = result["message"] as? String {
            print(message)
        }

   }

}  

1.您正在使用
responseString
而不是
responseJSON
。2.这是斯威夫特。使用
Dictionary
而不是
NSDictionary
。错误消息清楚地表明
result
String
而不是
Dictionary
。不要在Swift中使用
NSDictionary
。你在和强悍的体制抗争。使用本机类型
[字符串:任意]
。在这种情况下,请不要使用
value(forKey
)。使用密钥订阅。@当我使用responseJSON时,4kman会出现此错误。失败:responseSerializationFailed(Alamofire.AFError.responseSerializationFaileureReason.jsonSerializationFailed(错误域=NSCOCAerorDomain代码=3840“字符0周围的值无效”。用户信息={NSDebugDescription=字符0周围的无效值。})然后json的格式不正确。您应该打印出返回的
json
并发布它,告诉我们您的期望和结果。这样我们就可以知道哪里出错了。这样做纯粹是猜测。当我这样做时,我会得到“通用参数”键“无法在Cast to Dictionary中推断”。我猜这是一个json问题