Why is 'Fatal error: Unexpectedly found nil while unwrapping an Optional value' showing despite no nil values being present?
Why is 'Fatal error: Unexpectedly found nil while unwrapping an Optional value' showing despite no nil values being present?
我已经调查这个错误一段时间了,但我仍在努力寻找答案。
我理解这个错误背后的概念,但我不明白为什么它仍然通知我,即使我觉得我已经从 方程 中删除了任何 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())
}}
此结构通过一系列视图传递,它应该在消息传递界面中显示。
感谢您的帮助,我觉得我一直在以错误的方式看待这个问题,或者我可能遗漏了一些东西,这是一个简单的解决方法:)
var name: String = ""
是空 String
.
name.first
应该 return 您首先 Character
在 String
中(如果存在)可选。
对于您的示例,由于这是一个空的 String
,它将是 nil
。
当您强制转换 nil
的内容时,它会使您的应用程序崩溃并显示您看到的消息。
解决方案:
Text(String(name.first ?? ""))
我已经调查这个错误一段时间了,但我仍在努力寻找答案。
我理解这个错误背后的概念,但我不明白为什么它仍然通知我,即使我觉得我已经从 方程 中删除了任何 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())
}}
此结构通过一系列视图传递,它应该在消息传递界面中显示。
感谢您的帮助,我觉得我一直在以错误的方式看待这个问题,或者我可能遗漏了一些东西,这是一个简单的解决方法:)
var name: String = ""
是空 String
.
name.first
应该 return 您首先 Character
在 String
中(如果存在)可选。
对于您的示例,由于这是一个空的 String
,它将是 nil
。
当您强制转换 nil
的内容时,它会使您的应用程序崩溃并显示您看到的消息。
解决方案:
Text(String(name.first ?? ""))