Проверьте, существует ли символ 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))
Таким образом, мы можем изменить его цвет, размер и т. д.