Swift 4.2 - Alamofire неожиданно не работает - PullRequest
0 голосов
/ 11 октября 2018

Я использую Alamofire 4.7 со Swift 4.2, и с тех пор, как конвертация моего кода в Swift 4.2 Alamofire неожиданно вообще не работает.

У меня простой вызов, подобный следующему:

func createUser(username: String, email: String, password: String, passwordConfirm: String, completion: @escaping (_ result: String) -> Void)
    {

        let parameters: Parameters = [
            "username" : username,
            "email" : email,
            "password" : password,
            "confirm_password" : passwordConfirm
        ]

        Alamofire.request(webservice + "?action=register", method: HTTPMethod.post, parameters: parameters, encoding: URLEncoding.httpBody, headers: [:]).responseJSON { response in

            if(response.error == nil)
            {

                if let result = response.result.value {

                    let jsonData = result as! NSDictionary

                    if(jsonData["response"] == nil)
                    {
                        completion("")
                    }
                    else
                    {
                        completion(jsonData["response"] as! String)
                    }

                }
            }
            else
            {
                completion((response.error?.localizedDescription)!)
            }

        }
    }

Все параметры заполняются правильно, после проверки моего API, его вызова правильный метод (? Action = register), но мой пост пуст.Что я делаю не так?

1 Ответ

0 голосов
/ 01 ноября 2018

Знаете ли вы, что вы можете легко анализировать JSON с помощью Swift 4.2?Я использовал его недавно с представлением таблицы кодов набора - данные представляли собой локальный файл JSON:

    struct Countries: Codable {
    let countries: [Country]
}

struct Country: Codable {
    let code: Int
    let name: String
    let flagImage: String
}

enum CodingKeys: String, CodingKey {
    case code
    case name
    case flagImage
}

class CountryListVC: UITableViewController {

    func loadJSON() {

        if let path = Bundle.main.path(forResource: "countryDiallingCodes", ofType: "json") {

            do {
                let data = try Data(contentsOf: URL(fileURLWithPath: path), options: .alwaysMapped)
                let jsonObj = try JSONDecoder().decode(Countries.self, from: data)
                print("JSON Object: ", jsonObj)
                countries = jsonObj.countries

            } catch let error {
                print (error)
            }
        } else {
            print ("Error in path")
        }
    }
...