Swift 得到一个错误,说“我不知道”;由「;“字符串”;对于不相关的类型,NSDictionary总是失败;。我得到一个线程1:EXC\u BAD\u指令
我在let jsonData=result上得到一个错误!词典行。任何可能的方法来帮助我解决这个问题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
@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问题