为什么我的单例类在使用用户默认值的情况下重建时仍无法保留信息?

问题描述 投票:0回答:2

我需要创建一个MyPerson结构来存储firstName和lastName属性,这些属性需要全局保存和访问。在任何给定时间,我只有一个“人”。

现在,尽管我设法做到了使我的人员实例可以全局访问,但在整个构建中仍然无法持久。我在做什么错?

<<

struct MyPerson { var firstName: String { didSet { UserDefaults.standard.set(firstName, forKey: "fn") } } var lastName: String { didSet { UserDefaults.standard.set(lastName, forKey: "ln") } } init(first: String, last: String) { self.firstName = first self.lastName = last } } class Global { static let global = Global() var person: MyPerson? private init() { } } struct Home: View { var body: some View { Button(action: { Global.global.person = MyPerson(first: "John", last: "Doe") }) { Text("BUTTON") } } } struct Home2: View { var body: some View { Button(action: { guard let user = Global.global.person else {return} print(user.firstName) }) { Text("BUTTON") } } }

我需要创建一个MyPerson结构来存储firstName和lastName属性,这些属性需要全局保存和访问。在任何给定时间,我只有一个“人”。现在,当我有...
swift struct singleton swiftui
2个回答
0
投票
struct MyPerson { ... /// Failable initializer that checks for a previously-saved MyPerson init?() { guard let first = UserDefaults.standard.string(forKey: "fn"), let last = UserDefaults.standard.string(forKey: "ln") else { return nil } self.init(first: first, last: last) } } class Global { ... private init() { if let person = MyPerson() { self.person = person } } }

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.