尽管不存在 nil 值,但为什么显示“致命错误:在解开可选值时意外发现 nil”?

问题描述

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

我理解这个错误背后的概念,但我不明白为什么它仍然通知我,即使我觉得我已经从方程中删除了任何 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 应该在 Character 中返回第一个 String(如果存在)。

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

当您强制转换为 nil 的内容时,它会使您的应用崩溃并显示您所看到的消息。

解决方案:

Text(String(name.first ?? ""))

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...