ios - 如何快速更改现有通知的用户信息?需要维护用户登录记录

标签 ios swift authentication notifications

我正在尝试在 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”的值(因为用户注销),我的函数将更改登录按钮的文本。

总而言之,我的问题有两个。

  1. 如何在用户登录和注销时更新我的​​通知的用户信息
  2. 这是处理用户登录记录的好方法,还是有比这更好的方法

    我心里还有一个想法。 “当用户注销时,在我的家庭 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/

相关文章:

authentication - 通过单一身份验证机制对多个 Web 应用程序进行身份验证

azure - 调用经过用户身份验证的 http 触发器时发生错误

iOS MapKit - 通过保持地球的球面轨迹在两点之间创建一条线?

iphone - ZBarReader二维码检测时间

IOS:从不同 View 的类更改 View 的正确方法是什么?

ios - 想要根据刷卡 ID 在主屏幕上显示完成的总百分比

ruby-on-rails - token 和摘要有什么区别?

ios - ARkit图像识别和图像的AR可视化

ios - 如果我的 iOS 应用程序不使用 10 个以上的 View Controller ,该怎么做

ios - 如何使用 .whereKey 修改查询,但在 Xcode 中使用多个不同的参数?