Инициализация переменной @State со значениями из других инициализированных переменных - PullRequest
1 голос
/ 04 мая 2020

У меня есть 2 @State переменные:

@State var test1:String
@State var test2:String

Я могу сделать это:

    _test1 = State(initialValue: "test1")
    _test2 = State(initialValue: "test2")

и это:

    _test1 = State(initialValue: "test1")
    _test2 = _test1

, но не это:

    _test1 = State(initialValue: "test1")
    _test2 = State(initialValue: test1 + " and test2")

с ошибкой: Variable 'self.test2' used before being initialized

В чем причина этого? Есть ли подходящий способ использовать значение в test1 как часть test2?

Ответы [ 2 ]

2 голосов
/ 04 мая 2020

Вот проверенное решение. Xcode 11.4 / iOS 13.4

struct TestStatesInitialization: View {
    @State var test1:String
    @State var test2:String

    init() {
        _test1 = State(initialValue: "test1")
        _test2 = State(initialValue: _test1.wrappedValue + " and test2")
    }
    var body: some View {
        VStack {
            Text("1: \(test1)")
            Text("2: \(test2)")
        }
    }
}
1 голос
/ 04 мая 2020

Компилятор swift не позволяет использовать любое свойство экземпляра до инициализации. Хороший обходной путь - создать временную переменную для хранения значения test1, например,

let tempTest1 = State(initialValue: "test1")

 _test1 = tempTest1
 _test2 = State(initialValue: tempTest1.wrappedValue + " and test2")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...