Обновление URL путем добавления элементов запроса URLComponent к строке
В настоящее время я занимаюсь разработкой опроса, в котором данные json анализируются в 3 различных тестах с несколькими вариантами ответов. Все JSON правильно проанализированы, и я могу пройти опрос и ответить на вопросы и т. Д. Теперь я нахожусь в точке, где мне нужно настроить оценку опроса. Способ, которым это нужно настроить, заключается в том, что у меня есть конечная точка URL-адреса, к которой мне нужно вызывать и добавлять данные. Когда я делаю это, результаты сохраняются на сервере SQL. Я никогда не делал этого раньше, и на основании исследований кажется, что мне нужно использовать URLCompenents. Если я ошибаюсь, пожалуйста, предложите лучший способ сделать это. Вот код, который у меня есть.
var urlComponents: URLComponents {
let resultID = surveyQuestions.resultId
print("\(String(describing: resultID))")
let resultResponseID = surveyQuestions.questions[self.questionNumbers].surveyResultsResponseId
print("\(String(describing: resultResponseID))")
let questionIndex = questionNumbers
print("\(String(describing: questionIndex))")
var urlComponents = URLComponents()
urlComponents.scheme = "https"
urlComponents.host = "host.com"
urlComponents.path = "/api/survey/update-response"
urlComponents.queryItems = [
URLQueryItem(name: "surveyResultsId", value: "\(String(describing: resultID))"),
URLQueryItem(name: "surveyResultsResponseId", value: "\(String(describing: resultResponseID))"),
URLQueryItem(name: "questions", value: "\(questionIndex)"),
URLQueryItem(name: "selectedAnswer", value: "\(selectedAnswer)")
]
let url = urlComponents.url
print(url!.absoluteString as Any)
return urlComponents
}
Когда я распечатываю это, он печатает эту ссылку "https:/host.com/api/survey/update-response? SurveyResultsId=301941&surveyResultsResponseId=nil&questions=0&selectedAnswer=0"
Кажется, это работает правильно. Теперь мне нужно отправить этот результат с помощью GET, и для каждого выбранного ответа мне нужно обновить questionIndex и selectedAnswer URLQueryItem. Куда мне идти отсюда? Я пробовал это, но получаю ошибку "Недопустимое значение вокруг символа 0." Я верю, потому что это говорит о том, что результат, который я получаю, не является json
func fetchData(completion: @escaping (Bool) -> Void, onError: @escaping (NSError) -> Void) {
let urlComponents = self.urlComponents
guard let urlResponse = urlComponents.url else { return }
let task = URLSession.shared.dataTask(with: urlResponse) { (data, response, error) in
guard let data = data else { return }
do {
if (try JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String:Any]) != nil{
completion(true)
}
} catch let err {
print("Err", err)
}
}
task.resume()
}
и я называю это используя:
fetchData(completion: { (successful) in
print(successful)
}) { (error) in
print(error.domain)
}
Буду признателен за любую оказанную помощь.
Спасибо