gpt4 book ai didi

ios - UserDefaults 不是第一次加载

转载 作者:行者123 更新时间:2023-11-28 12:08:42 25 4
gpt4 key购买 nike

我有一个两步登录过程。在第一个屏幕上,我将 FB 用户的详细信息保存到 UserDefaults。

当我加载第二个 ViewController 时,它应该加载用户的个人资料图像和用户名(我使用“全名”创建)。它实际上在我第二次加载用户时有效,但从来没有第一次加载过,是否有某种延迟?我已经尝试过 UserDefaults.standard.synchronize() 但它什么也没做。它甚至打印细节,所以我知道它有效...

    let userName = fullName.replacingOccurrences(of: " ", with: "_")
UserDefaults.standard.setValue(userName, forKey: "username")

if let picture = result["picture"] as? NSDictionary , let data = picture["data"] as? NSDictionary, let url = data["url"] as? String {
UserDefaults.standard.setValue(url, forKey: "userFBPicURL")

let username = UserDefaults.standard.value(forKey: "username") as? String
let profileImage = UserDefaults.standard.value(forKey: "userFBPicURL") as? String

UserDefaults.standard.synchronize()

print ("Details are User:",username, "profileImage:",profileImage)

并且在 self.performSegue(withIdentifier: "UsernameSegue", sender: self) 之后的新 VC 中:

override func viewDidLoad() {
super.viewDidLoad()
if let username = UserDefaults.standard.value(forKey: "username") as? String {usernameTextfield.text = username}
if FBSDKAccessToken.current() != nil {loadFacebookProfileImage()}
}

最佳答案

我认为您是在 执行 segue 之后或调用 viewDidLoad 之后将值设置为 UserDefaults。

尝试查找问题的步骤:

  1. 能否请您尝试设置断点,看看先执行什么,然后执行什么?
  2. 尝试从 defaults 分配后立即打印。
  3. 尝试不在 ViewDidLoad 中而是稍后获取数据。例如点击按钮。只是为了看看它是否也是第一次出现(但不仅是第二次出现)

问题:在哪里设置默认值?

PS:我也不会为此使用 UserDefaults,但这是一个不同的问题。

抱歉,这无法提供确切的解决方案,因为它需要您调试的更多信息/代码。请尝试上面的选项。希望对您有所帮助。

关于ios - UserDefaults 不是第一次加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48961842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com