Как использовать строку для загрузки изображения SF-символа, и если SF-символ с таким именем недоступен, вместо этого загрузите загруженное пользователем изображение с этим именем строки - PullRequest
1 голос
/ 10 июля 2020

В моем приложении SwiftUI у меня есть строковые имена, которые являются именем изображения символа SF или изображений, хранящихся в каталоге активов.

Я хотел бы создать представление, которое сначала пытается отобразить изображение как изображение символа SF, и если изображение символа SF с таким именем не существует, чтобы вместо этого отображать изображение из моего каталога активов.

import SwiftUI

struct ImagePresenter: View {

    let name: String = "test"
    
    var body: some View {
        Group {
            if Image(systemName: name) == nil {
                Image(name)
            } else {
                Image(systemName: name)
            }
        }
    }
}

1 Ответ

2 голосов
/ 10 июля 2020

Вы не можете использовать Image(systemName:) для сравнения nil, так как оно не возвращает необязательный параметр.

Попробуйте вместо UIImage:

import SwiftUI
import UIKit

struct ContentView: View {
    let name: String = "test"

    var body: some View {
        Group {
            if UIImage(systemName: name) == nil {
                Image(name)
            } else {
                Image(systemName: name)
            }
        }
    }
}
...