Преобразование DataResponse <String>в пригодный для использования тип - PullRequest
0 голосов
/ 18 мая 2018

У меня есть запрос POST, который показан ниже.Мне нужна помощь о том, как использовать данные ответов.Я получаю ответ в виде словаря.Какую практику лучше использовать здесь?Я получаю сообщение об ошибке:

Невозможно присвоить значение типа 'DataResponse' типу 'String'

func getRequest(){
    let urlString = "http://scissors.pythonanywhere.com/getRequest"
    Alamofire.request(urlString, method: .post, parameters: ["date": self.weekDays[self.itemSelectedIndex]],encoding: JSONEncoding.default, headers: nil).responseString {
        response in
        switch response.result {
        case .success:
            print(response)
            var backToString = String(data: response, encoding: String.Encoding.utf8) as String?

            break
        case .failure(let error):

            print(error)
        }
    }
}

Я пытался self.bookings = response as! String, но оно даетмне предупреждение о том, что это не удастся.Также попробовал это: Alamofire в Swift: преобразование данных ответов в пригодный для использования словарь JSON без удачи.

EDIT

Это печать, которую я получаю из ответа.

SUCCESS: {
    "10:00" =     {
        booked = false;
        name = "";
        number = "";
    };
    "10:30" =     {
        booked = false;
        name = "";
        number = "";
    };
    "11:00" =     {
        booked = false;
        name = "";
        number = "";
    };
}

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Я действительно использовал этот метод, который был очень простым и легким.В моем случае бронирование было объявлено так: var bookings: NSDictionary = [:]

func getRequest(){

    let urlString = "http://scissors.pythonanywhere.com/getRequest"
    Alamofire.request(urlString, method: .post, parameters: ["date": self.weekDays[self.itemSelectedIndex]],encoding: JSONEncoding.default, headers: nil).responseJSON {
        response in
        switch response.result {
        case .success(let JSON):
            self.bookings = JSON as! NSDictionary

            self.tableView.reloadData()

            break
        case .failure(let error):
            print(error)
        }
    }
}
0 голосов
/ 18 мая 2018

Теперь, когда у вас есть представление JSON, вы сможете сделать что-то вроде этого:

if let dict = response as? [String:Any]{
    if let obj = dict["10:00"] as? [String:Any]{
         let booked = obj["booked"] as? Bool ?? false
         print("booked: \(booked)");
    }
}
...