Чего я хочу достичь?
У меня есть единственный параметр с 20 идентификаторами, как показано ниже. Я хочу, чтобы все эти данные id были в одном массиве.
https://someWebsite.com/1
https://someWebsite.com/2
https://someWebsite.com/3
https://someWebsite.com/4
и так далее ....
Вместо того, чтобы писать один и тот же код снова и снова, я хочу вызвать их все сразу и соберите эти данные в один массив.
Что я сделал до сих пор?
Мой код ниже
Моя модель
struct Base: Codable {
let aType: Type?
enum CodingKeys: String, CodingKey {
case aType = "a_type"
}
}
struct Type: Codable {
let name: String?
enum CodingKeys: String, CodingKey {
case name
}
}
Мой сетевой код
func getRequest(urlString: String?) {
guard let urlString = urlString else { return }
var namesArr = [String]()
let urlSession = URLSession.shared
for i in 1...20 {
let finalURLString = urlString + "/\(i)"
guard let url = URL(string: finalURLString) else { return }
let task = urlSession.dataTask(with: url) { data, response, error in
if error != nil {
print("Lost here itself")
return
}
do {
guard let data = data else { return }
let decoder = JSONDecoder()
let decodedData = decoder.decode(Base.self, form: data)
guard let temp = decodedData.aType else { return }
guard let nameText = temp.name else { return }
namesArr.append(nameText)
print(namesArr)
} catch {
print(error.localizedDescription)
}
}
task.resume()
}
}
Вызов метода
getRequest(urlString: "https://someWebsite.com")
С какой проблемой я столкнулся?
Из приведенного выше В настоящее время я получаю 6 значений в свой массив из 20, а для остальных 14 он выдает ошибку ниже
The data couldn’t be read because it isn’t in the correct format.
И, наконец, одна важная вещь - когда я делаю отдельные сеансы urlSessions для каждого случая i Я получаю все значения без каких-либо проблем.
Какие у меня вопросы?
- Любой другой способ сделать несколько вызовов, кроме использования для l oop ?
- Почему только несколько вызовов возвращают данные, в то время как другие выдают ошибку из моих 20 вызовов?
Любая помощь по этому поводу Ульд будет здорово.