我是Swift的新手,并且制作其中一个教程(相当陈旧),其中涉及通过php从服务器获取凭据,返回JSON,但我仍然遇到错误{{1}在json var中,我搜索并尝试应用不同的解决方案,但无济于事。 :(
感谢您的时间和帮助。
这是我的代码:
Ambiguous reference to member jsonObject(with:options:)
答案 0 :(得分:2)
有两个主要问题:
发生实际错误是因为完成块中的response
参数错误。 <而不是类型URLResponse
,它必须是参数标签/变量。
let task = URLSession.shared.dataTask(with: request) { data, response, error in
由于您使用的是Swift 3,error
中没有jsonObject(with
参数。该方法执行throw
,您需要do - catch
块。并且 - 一如既往 - 选项.mutableContainers
在Swift中完全没用。省略参数。
do {
if let parseJSON = try JSONSerialization.jsonObject(with: data) as? [String:Any],
let resultValue = parseJSON["status"] as? String {
print("result: ", resultValue)
if resultValue == "Success" {
//Login Succesful
UserDefaults.standard.set(true, forKey:"isUserLoggedIn")
self.dismiss(animated: true, completion: nil)
}
}
} catch {
print(error)
}
其他一些说明:
要安全地检查文本字段,请使用可选绑定
guard let userEmail = userEmailTextField.text, !userEmail.isEmpty, let userPassword = userPasswordTextField.text, !userPassword.isEmpty else {
displayMyAlertMessage(userMessage: "All Fields are required.")
return
}
let
(例如resultValue
)NSArray / NSDictionary
。使用原生类型。if
也不需要。UserDefaults.standard.synchronize()
可以简化为String.Encoding.utf8
。