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

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

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

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

Ответы [ 2 ]

1 голос
/ 21 июня 2019

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

@State var text: String = "" {
    didSet {
        print(oldValue, text)
    }
}
1 голос
/ 20 июня 2019

У меня тоже есть эта проблема, похоже на ошибку компилятора или что-то в этом роде. Я покопался и обнаружил ошибку, поднятую 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

...