Используя XCode 11.4, Swift 5.0
Я бы хотел, чтобы переменная Text (correctionLabel
) в ContentView обновлялась всякий раз, когда создаваемая мной переменная (сохранялась у пользователя приложения) по умолчанию) изменено. Приведенный ниже код демонстрирует мою попытку использовать didSet
для обновления текста в ContentView при каждом изменении входной переменной:
//ContentView.swift
//this is a single page application
import SwiftUI
let defaults = UserDefaults.standard
var correctionLabel = Text("O")
var corrections = defaults.integer(forKey: "CorrectionCount") {
didSet {
correctionLabel = Text("\(corrections)")
print("old value is \(oldValue) and new value is \(corrections)")
print(correctionLabel)
}
}
struct ContentView: View {
var body: some View {
correctionLabel
}
}
//code for incrementing the corrections variable not shown here
Все остальное с приложением было проверено и работает, проверка с помощью print()
испытаний чтобы убедиться, что переменная corrections
действительно увеличивается при изменении ориентации iPhone. Однако экранный счетчик начинается с 0, но никогда не увеличивается, и консоль отображает эту ошибку для print(correctionLabel)
:
Text(storage: SwiftUI.Text.Storage.anyTextStorage(SwiftUI.(unknown context at $1cf871518).LocalizedTextStorage), modifiers: [])
Мне кажется, что проблема должна быть незначительной, и я что-то здесь упускаю, поскольку желаемый конечный продукт представляет собой простой экранный счетчик, который начинается с 0 и увеличивается на 1 постепенно. Любое понимание очень ценится!