Я использовал Asyncimage для своего проекта, который получает изображения с использованием URL. Я думал, что Asyncimage - лучший способ пойти, так как Swiftui предоставляет готовый к использованию компонент. Сообщение об ошибке о том, почему запрос на URL не удался (например, нет разрешений на доступ к URL или по какой -либо другой причине). < /p>
Причина, по которой я постоянно вижу, - это операция не может быть завершена. (Swiftui. (Неизвестный контекст в $ 1D2600574). Загрузка ошибка 1.) p>
import SwiftUI
class Foo {
var title: String
var url: String
var image: Image?
init(title: String, url: String, image: Image? = nil) {
self.title = title
self.url = url
self.image = image
}
}
struct ContentViewA: View {
@State var showSheetA: Bool = false
var body: some View {
VStack {
Text("This is main view")
}
.onAppear{
showSheetA = true
}
.sheet(isPresented: $showSheetA) {
SheetViewA()
}
}
}
struct SheetViewA: View {
@State var data = [
Foo(title: "Image E", url: "https://t3.ftcdn.net/jpg/10/08/34/50/36 ... D4l.jpg123", image: nil)
]
@State var panelDetent: PresentationDetent = .medium
var body: some View {
NavigationStack {
VStack {
ScrollView(.horizontal, showsIndicators: false) {
HStack(alignment: .center, spacing: 10) {
ForEach(data, id: \.title) { item in
if let urlObject = URL(string: item.url) {
AsyncImage(url: urlObject,
scale: 1.0,
transaction: Transaction(animation: .spring(response: 0.5, dampingFraction: 0.65, blendDuration: 0.025)),
content: { renderPhoto(phase: $0, item: item) })
} else {
/// Note: Shows placeholder view
EmptyView()
}
}
}
.background(Color.gray.opacity(0.2))
.padding(.leading, 0)
.padding(.trailing, 16)
.frame(maxWidth: .infinity, minHeight: 65, maxHeight: 65, alignment: .topLeading)
}
}
.padding([.top, .bottom], 150.0)
.presentationDetents([.medium, .large], selection: $panelDetent)
}
}
@ViewBuilder
private func renderPhoto(phase: AsyncImagePhase, item: Foo) -> some View {
switch phase {
case .success(let image):
let _ = print("Success state")
case .failure(let error):
let _ = print("%%% detailed error is - \(error.localizedDescription) %%%%")
case .empty:
let _ = print("Empty state")
@unknown default:
EmptyView()
}
}
}
< /code>
Есть ли способ получить подробное сообщение об ошибке, используя Asycnimage? Или мне придется получить изображения, используя старый метод запроса UrlSession? Мне нужно отобразить подробное сообщение об ошибке на пользовательском интерфейсе.
Подробнее здесь: https://stackoverflow.com/questions/793 ... in-swiftui
Подробная ошибка из асинтегии в Swiftui? ⇐ IOS
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Со скольки месяцев можно детям есть оливковое масло? Подробная инструкция для родителей.
Anonymous » » в форуме JAVA - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-