【问题标题】:Why is 'Fatal error: Unexpectedly found nil while unwrapping an Optional value' showing despite no nil values being present?为什么尽管没有 nil 值存在,但仍显示“致命错误:在展开可选值时意外发现 nil”?
【发布时间】:2021-09-20 22:35:35
【问题描述】:

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

我理解这个错误背后的概念,但我不明白为什么它仍然通知我,即使我觉得好像我已经从 equation 中删除了任何 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())
}}

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

感谢您的帮助,我觉得好像我一直在以错误的方式看待这个问题,或者我可能遗漏了一些东西,这很容易解决:)

【问题讨论】:

    标签: swift error-handling swiftui swift-optionals


    【解决方案1】:

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

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

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

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

    解决方案:

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

    【讨论】:

    • 非常感谢,这太简单了,所以很抱歉占用您的时间:它成功了!我对 swift 很陌生,因为我必须为我在学校的高年级项目学习它,而其中一些基本的东西有时会让我忽略。你帮了我很大的忙,因为我现在可以继续我的主要工作了。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 2021-09-19
    • 2016-01-26
    • 1970-01-01
    • 2016-02-29
    • 2020-09-19
    相关资源
    最近更新 更多