Невозможно преобразовать значение типа ‘(NSData ?, URLResponse ?, NSError?) — & gt; () «к ожидаемому типу аргумента» (Data ?, URLResponse?

Привет всем, я пробую свои силы на Swift, и я пытаюсь опубликовать регистрационные данные пользователей. Я знаю, как это сделать FireBase, но мой основной проект в PHP MySQL, поэтому я хочу подключить его с Swift

@IBAction func signUp(_ sender: Any) {

//check textfield data
checkTextFields()

//create user
let url = NSURL(string: "http://localhost:8888/helo/register.php")
let request = NSMutableURLRequest(url: url! as URL)
request.httpMethod = "POST"
//apending body to url
let body = "Fullname=\(name.text!.lowercased())&userName=\(userName.text!.lowercased())&emailAddress=\(emailAddress.text!.lowercased())&password=\(password.text!.lowercased())"request.httpBody = body.data(using: String.Encoding.utf8)


//lunching
URLSession.shared.dataTaskWithRequest(request as URLRequest, completionHandler: { (data:NSData?, response:URLResponse?, error:NSError?) in

if error == nil{

dispatch_async(dispatch_get_main_queue(),{
do {
let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as?
NSDictionary

guard let parseJSON = json else{
print("Error while parsing")
return
}
let id =  parseJSON["id"]

if id != nil {
print(parseJSON)
}

}catch{
print("Caugth an error: \(error)")
}

})
}else{
print("error: \(error)")
}
} )
}

Я получаю ошибку в строке, где я прокомментировал как обед, который говорит

Cannot convert value of type '(NSData?, URLResponse?, NSError?) -> ()' to expected argument type '(Data?, URLResponse?, Error?) -> Void'

Я новичок в Swift, любая помощь приветствуется, спасибо всем. Я использую Xcode 9

-1

Решение

После достаточного чтения я просто понял, что делаю очень утомительный и использующий ортодоксальный метод, когда ситуация улучшилась. Я удалил весь код и сделал все с Alamofire. Это действительно легко и прямо. Я опубликую код ниже, чтобы помочь другим, кто столкнется с подобными проблемами позже.

//Constant that holds the URL for our web servicer
let URL_USER_REGISTER = "http://localhost:8888/members/register.php?"
Alamofire.request(URL_USER_REGISTER, method: .post, parameters: parameters).responseJSON{
response in
//printing response
print(response)

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

//converting it as NSDictionary
let jsonData = result as! NSDictionary

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

Вы должны сначала импортировать Alamofire.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]