【发布时间】:2021-02-09 18:53:54
【问题描述】:
我正在创建一个页面 settingView 来保存用户数据,我在其中使用 @ObservedObject 调用一个类。 我还在settingView页面中做了一些函数来加载和保存用户数据。 但是我收到错误“无法分配给属性:'self' 在 SettingView 中是不可变的”。我该如何解决这个问题。
class UserData: ObservableObject, Codable {
@Published var name = ""
@Published var firstname = ""
@Published var email = ""
}
struct SettingsView: View {
@ObservedObject var userdata = UserData()
var body: some View {
NavigationView{
Form {
Section(header: Text("User")){
TextField("Name", text: $userdata.name)
TextField("Firstname", text: $userdata.firstname)
TextField("Email...", text: $userdata.email)
//more code
}
Section{
Button(action: {
self.saveData()
self.showingAlert = true
}){
Text("Save")
}
}
}
.onAppear(perform: {
self.loadData()
})
}
func getDocumentsDirectory() -> URL {
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
return paths[0]
}
func loadData() {
let filename = getDocumentsDirectory().appendingPathComponent("SavedData")
do {
let data = try Data(contentsOf: filename)
userdata = try JSONDecoder().decode(UserData.self, from: data) <-- error on userdata
print("File is loaded")
} catch {
print("Unable to load saved data.")
}
}
}
【问题讨论】:
标签: swiftui