3

我想显示一个带有数字的 SwiftUI 图像。我可能会这样做:

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

然而,并不是每个号码都有一个 SF 符号——如果我想显示134.square.fill但发现没有一个,会导致应用程序崩溃怎么办?

如何在不使应用程序崩溃的情况下检查 SF 符号是否存在?

4

2 回答 2

4

如果数字不存在,则以下代码将显示问号符号。但是你可以调整它来做任何事情。

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

        return VStack {
            Image(uiImage: UIImage(systemName: "\(number).square.fill") ?? UIImage(systemName: "questionmark.square.fill")!)
        }
    }
}
于 2019-08-04T10:37:44.097 回答
0

在我自己遇到这种情况之后,@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))

这样我们就可以改变它的颜色、大小等等……</p>

于 2022-01-30T05:41:02.563 回答