Проверьте, существует ли символ SF Swift

Я хочу отобразить изображение SwiftUI с номером. Я мог бы сделать это так:

let number = 13
Image(systemName: "\(number).square.fill")

Тем не менее, не каждый номер имеет символ SF - что если бы я хотел отобразить 134.square.fill но обнаружил, что не один, вылетает приложение?

Как я могу проверить, существует ли символ SF без сбоя приложения?

2 ответа

Решение

Следующий код покажет символ вопросительного знака, если один для номера не существует. Но вы можете адаптировать его, чтобы делать что угодно.

struct ContentView: View {
    var body: some View {
        let number = 144

        return VStack {
            Image(uiImage: UIImage(systemName: "\(number).square.fill") ?? UIImage(systemName: "questionmark.square.fill")!)
        }
    }
}

После того, как я сам оказался в этой ситуации, ответ @kontiki действительно дал мне фору, но в его решении модификаторы, которые мы применяем к изображению, не будут работать, так что это мой подход:

Мы создаем функцию, которая возвращает строку вместо изображения:

      func safeSystemImage(_ image: String) -> String {
    let image = "\(image).square.fill"
    
    if UIImage(systemName: image) != nil {
        return image
    } else {
        return "" // ← The image you want in case it doesn't exist. 
    }
}

Применение:

      Image(systemName: safeSystemImage(yourImage))

Таким образом, мы можем изменить его цвет, размер и т. д.

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