Я попытался использовать новые функции Async/Await в Swift 5.5 и попробовал следующий код.
let url = URL(string: "http://itunes.apple.com/lookup?bundleId=\(id)&country=at")
let (data, _) = try await URLSession.shared.data(from: url!)
let resultStruct = try jsonDecoder.decode(ResponseStruct.self, from: data)
Каждый раз, когда я выполняю это, часть try await URLSession.shared.data(from: url!)
выдает ошибку. Если я поймаю это и напечатаю error.localizedString
, меня всегда отменят. Это происходит со всеми типами URL-адресов. Я пытался придерживаться учебных пособий, которые нашел в Интернете, но чего мне здесь не хватает?
РЕДАКТИРОВАТЬ: я принудительно включил приложение в исключение времени выполнения, чтобы получить более подробную информацию об ошибке:
Fatal error: 'try!' expression unexpectedly raised an error: Error Domain=NSURLErrorDomain Code=-999 "cancelled"
Поскольку в этом сообщении объясняется код ошибки NSURLErrorDomain -999 в iOS, эта ошибка возникает, когда SSL-сертификат сервера имеет проблемы, которые я не думаю, что это так, поскольку я обращаюсь к серверу iTunes или когда запрос отменяется чем-либо еще в моем приложении, что похоже на случай для меня.
Cancelled
— это именно то, что я ожидал увидеть для конвейера Combine, которому никогда не давали команду.store
. - person matt   schedule 08.07.2021