Изменение переменной @State на значение из UserDefaults при загрузке без обновления Picker - PullRequest
1 голос
/ 13 февраля 2020

Я пытаюсь обновить переменную @State при загрузке моего приложения значением, сохраненным в UserDefaults, но мой Picker не обновляется. Это то, что я попробовал:

struct ContentView: View {

    @State var selectedCanteen = 1

    init() {
        let previousSelectedCanteen = UserDefaults.standard.string(forKey: "selectedCanteen")
        if let exist = previousSelectedCanteen {
            self.selectedCanteen = Int(exist) ?? 1
        }
    }

    var body: some View {
       Picker(selection: $selectedCanteen, label: Text("Testing...")) {
          Text("Stuff").tag(1)
          Text("Stuff 2").tag(2)
       }
    }
}

Я пришел из реактивной системы, поэтому, возможно, я пропустил некоторые базовые c концепции в Swift / SwiftUI. Надеюсь, кто-нибудь может привести меня в правильном направлении.

1 Ответ

1 голос
/ 13 февраля 2020

Попробуйте использовать следующий подход

@State var selectedCanteen: Int

init() {
    let previousSelectedCanteen = UserDefaults.standard.string(forKey: "selectedCanteen")
    var initialValue = 1
    if let exist = previousSelectedCanteen {
        initialValue = Int(exist) ?? 1
    }
    _selectedCanteen = State<Int>(initialValue: initialValue)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...