Добавление заполнителя в AsyncImage и отображение другого изображения, если AsyncImage не может получить изображение

Я пытаюсь использовать, чтобы показать, пока он получает изображение из URL-адреса, но если ему не удается получить изображение, должно отображаться другое изображение. Мой код работает в том смысле, что он будет отображать другое изображение, если не удается получить изображение, но я не могу показать заполнитель во время выполнения асинхронной операции. Приведенный ниже код не содержит модификатора заполнителя и работает нормально (EDIT: на самом деле не подтверждено, если он работает...):

      var body: some View {
    AsyncImage(url: url, scale: scale ?? 1) { phase in
        if let image = phase.image {
            image
                .resizable()
                .aspectRatio(contentMode: contentMode ?? .fit)
                .frame(width: width, height: height)
        } else {
            Image("placeholder_img")
                .resizable()
                .frame(width: 50, height: 50)
                .border(Color(.NeutralPalette5))
                .padding()
                .aspectRatio(contentMode: .fill)
        }
    }
    .frame(width: width, height: height)
}

Но добавление модификатора-заполнителя в этот код не работает:

      var body: some View {
    AsyncImage(url: url, scale: scale ?? 1) { phase in
        if let image = phase.image {
            image
                .resizable()
                .aspectRatio(contentMode: contentMode ?? .fit)
                .frame(width: width, height: height)
        } else {
            Image("placeholder_img")
                .resizable()
                .frame(width: 50, height: 50)
                .border(Color(.NeutralPalette5))
                .padding()
                .aspectRatio(contentMode: .fill)
        }
    } placeholder: {
        ProgressView()
            .progressViewStyle(.circular)
    }
    .frame(width: width, height: height)
}

Вышеприведенное приводит к следующей ошибке:

Failed to produce diagnostic for expression; please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the project

Может ли кто-нибудь сказать мне, как я могу использовать заполнитель с моим кодом? Я в основном пытаюсь показатьв то времяполучает изображение, но если ему не удается получить изображение, должно отображаться другое изображение, поэтому, если есть лучший способ сделать это, сообщите мне.

0 ответов

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