我正在尝试在 swift IOS 应用程序中维护用户的登录记录。 我有一个登录 View Controller ,在成功登录用户后,我会在其中发布通知。
let infodict = ["userLoggedIn": true]
NotificationCenter.default.post(name:
NSNotification.Name(rawValue:"NotificationuserLoggedIn"), object: nil, userInfo: infodict)
在我的 Home View Controller 的 viewdidload 中,我正在向它添加观察者
NotificationCenter.default.addObserver(self, selector:
#selector(self.toggleLoginButtonText(_:)), name:
NSNotification.Name(rawValue:"NotificationUserLoggedIn"), object: nil)
观察者将调用函数“toggleLoginButtonText”。在这个函数中,我正在切换登录按钮的文本。如果用户已登录,则按钮文本应为“注销”,否则为“登录”。到目前为止一切正常。
问题:我希望每当用户通过按下按钮注销时,我都会更新同一通知的用户信息。然后我的家庭 Controller 的 viewwillappear 函数,我将调用“toggleLoginButtonText”函数,它将检查通知值。如果“userLoggedIn”的值(因为用户注销),我的函数将更改登录按钮的文本。
总而言之,我的问题有两个。
- 如何在用户登录和注销时更新我的通知的用户信息
这是处理用户登录记录的好方法,还是有比这更好的方法?
我心里还有一个想法。 “当用户注销时,在我的家庭 Controller 中发布另一个通知和观察者,当用户再次登录时,发布另一个通知,依此类推”。但对我来说,我似乎是一项重复性的任务。
我一直在寻找这些问题的答案。但是只有关于如何使用我已经通过的通知传递数据的答案。
How to pass data using NotificationCentre in swift 3.0 and NSNotificationCenter in swift 2.0?
How to pass data using NotificationCentre in swift 3.0 and NSNotificationCenter in swift 2.0?
最佳答案
更好的解决方案是使用 UserDefaults。在 UserDefaults 中的键“isLoggedIn”上存储一个 bool 值,并在用户登录时将其设置为“true”,在注销时将其设置为“false”。在家庭 VC 的 viewWillappear 函数中,读取键“isLoggedIn”上 UserDefaults 的值( bool 值)并更改任何你想要的。
关于ios - 如何快速更改现有通知的用户信息?需要维护用户登录记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46579365/