Swift: не удается получить URL от URLComponents в закрытии

Я пытаюсь создать URL-адрес и сохранить строковое представление из замыкания. После доступа к некоторому JSON, используя URLSessionЯ создаю другой URL (используя URLComponents) храниться в объекте в моей модели.

Тем не менее, мой URL продолжает возвращаться nil неожиданно, и не удается защитное заявление, вызывая preconditionFailure(message:) пункт.

Я могу проверить, что мой URLComponents объект (artistComponents) не является nil, Я пытался создать новый URLComponents объект в закрытии, а также ссылки на URLComponents Свойство класса из замыкания, представляющее необходимую информацию URL.

let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let artistResponse = try decoder.decode(ArtistListResponse.self, from: data)

var artistComponents = URLComponents(url: this.components.url!, resolvingAgainstBaseURL: false)
// Have also tried:
// var artistComponents = this.components
// var artistComponents = URLComponents() and then proceed to fill in necessary information

artistComponents?.path = "generate"

for jsonArtist in artistResponse.data {
    artistComponents?.queryItems = [URLQueryItem(name: "artist", value: jsonArtist.urlName)]
    guard let artistURL = artistComponents?.url else {
        preconditionFailure("Failed to construct artistURL for \(jsonArtist.name)")
    }
    let artist = Artist(id: this.idCount,
                        name: jsonArtist.name,
                        urlName: jsonArtist.urlName,
                        url: artistURL.absoluteString,
                        avatarURL: jsonArtist.avatarURL,
                        song: nil)
    this.artists.append(artist)
    this.idCount += 1
}

Я ищу, чтобы проверить URL, чтобы я мог добавить объект в мою модель данных. Любой совет? Заранее спасибо!

0 ответов

Другие вопросы по тегам