Как исправить ошибку XCode "Ошибка сегментации: 11" после добавления didSet в @State var

Я хочу добавить функцию didSet к параметру структуры представления SwiftUI, но каждый раз, когда я пытаюсь создать приложение, я получаю ошибку "Ошибка сегментации: 11".

Я попытался переименовать параметр, но ничего не произошло. Я также пытался сделать его необязательным, но, поскольку это @State, он не работал. Что я могу сделать?

@State var text: String {
    didSet {
        print(oldValue, text)
    }
}

2 ответа

Попробуйте добавить значение по умолчанию в вашу переменную, что необходимо при определении @State вар.

@State var text: String = "" {
    didSet {
        print(oldValue, text)
    }
}

У меня тоже есть эта проблема, похоже на ошибку компилятора или что-то. Я покопался и нашел ошибку, поднятую Apple, которую можно найти здесь https://bugs.swift.org/browse/SR-10918

Вместо того, чтобы использовать didSet на переменную с @State Оболочка свойства вы можете иметь модель представления, которая соответствует BindableObject (часть Combine) и использовать @ObjectBinding по вашему мнению, поэтому, когда что-либо в вашей модели представления обновляется, SwiftUI обновит ваш пользовательский интерфейс

Вот хороший учебник о том, как это сделать...

https://www.hackingwithswift.com/quick-start/swiftui/how-to-use-objectbinding-to-create-object-bindings

Другие вопросы по тегам