Я использовал 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
Программируем под IOS
1738191379
Anonymous
Я использовал 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/360_F_1008345045_VOe4ziz83vb6d3E3X6KI00qHyLd32D4l.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? Мне нужно отобразить подробное сообщение об ошибке на пользовательском интерфейсе.
Подробнее здесь: [url]https://stackoverflow.com/questions/79398385/detailed-error-from-asyncimage-in-swiftui[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия