-1

我一直在调查这个错误一段时间,但我仍在努力寻找答案。

我理解这个错误背后的概念,但我不明白为什么它仍然通知我,即使我觉得我已经从等式中删除了任何 nil 值(<- 短语,而不是代码)。

struct NickName: View {

var name: String = ""
@AppStorage("current_user") var user = ""

var body: some View {
    
    Text(String(name.first!)) //It notifies me here, i.e. 'Thread 1: Fatal error...'
        .fontWeight(.heavy)
        .foregroundColor(.white)
        .frame(width: 50, height: 50)
        .background((name == user ? Color.blue : Color.green).opacity(0.5))
        .clipShape(Circle())
}}

这个结构通过一系列视图传递,它应该在消息界面中呈现。

感谢您的帮助,我觉得好像我一直在以错误的方式看待这个,或者我错过了一些东西,这是一个简单的修复:)

4

1 回答 1

5

var name: String = ""是一个空的String

name.first如果它存在,应该首先Character在可选中返回您。String

对于您的示例,由于这是一个空的String,它将是nil.

当您强制转换时nil,它会使用您看到的消息使您的应用程序崩溃。

解决方案 :

Text(String(name.first ?? ""))
于 2021-07-11T11:46:22.073 回答