Cra sh Canvas SwiftUI в .onAppear - PullRequest
0 голосов
/ 30 марта 2020

При установке этой функции предварительный просмотр холста в 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 голосов
/ 30 марта 2020

это не имеет никакого отношения к холсту ... он падает везде. Отладчик - ваш друг, и он говорит:

2020-03-30 18: 51: 19.909408 + 0200 crashcanvas [22116: 930944] Неустранимая ошибка: индекс выходит за пределы диапазона: file / AppleInternal / BuildRoot / Library / Caches /com.apple.xbs/Sources/swiftlang/swiftlang-1103.2.25.8/swift/stdlib/public/core/ContiguousArrayBuffer.swift, строка 444 (lldb) po misIniciales ▿ 1 элемент - 0: «Неизвестный пользователь»

-> причина: если у пользователя ничего нет, в массиве misIniciales будет один элемент, но вы предполагаете здесь

 self.iniciales = String(misIniciales[0].prefix(1) + misIniciales[1].prefix(1))

, что всегда есть два элемента при доступе к misIniciales [1]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...