.onAppear中的崩溃画布SwiftUI

时间:2020-03-30 16:25:39

标签: swiftui

当我放置此功能时,swiftUI中的画布预览被破坏了。 我不明白问题出在什么地方,如果我评论它,它会很好地工作,但是如果我不评论它,它就会崩溃。 我有点绝望,因为当画布破裂时,我很难编程。 我的代码是:

struct DashboardView: View {
    @State var user : String = "aa.aas"
    @State var iniciales : String = "AA"
    @State var fichado : Bool = false
    private func cargaDatos(){
        let defaults    = UserDefaults.standard
        self.user = defaults.string(forKey: "user") ?? "Unknown user"
        let misIniciales = self.user.components(separatedBy: ".")
        self.iniciales = String(misIniciales[0].prefix(1) + misIniciales[1].prefix(1))


    }
    var body: some View {
        VStack {

           ...

        }.onAppear{
            DispatchQueue.main.async {
                self.cargaDatos()
            }

        }
    }
}

struct DashboardView_Previews: PreviewProvider {
    static var previews: some View {
        DashboardView()
    }
}

感谢帮助

1 个答案:

答案 0 :(得分:0)

这与画布无关...到处崩溃。 调试器是您的朋友,它说:

2020-03-30 18:51:19.909408 + 0200 crashcanvas [22116:930944]致命错误:索引超出范围:文件/AppleInternal/BuildRoot/Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang -1103.2.25.8 / swift / stdlib / public / core / ContiguousArrayBuffer.swift,第444行 (lldb)po misIniciales element 1个元素 -0:“未知用户”

->原因:如果用户什么都没有,数组misIniciales将只有一项,但是您假设在这里

.as-console-row {color: blue!important}

通过访问misIniciales [1]总是有两个项目