0

在我的应用程序中,我将数据保存在 userDefaults 中,当我尝试使用相同的密钥更新数据时,它确实会更新,但前提是我关闭应用程序并重新启动模拟器。否则,如果我想立即访问它(它是其他视图控制器),它不会给我更新的对象,但它会给我我用那个键保存的最后一个数据。我更新了一个视图控制器中的数据override func viewWillDisappear(_ animated : )并尝试在父视图控制器中访问它。

我是这样做的:

override func viewWillDisappear(_ animated : Bool) {
    super.viewWillDisappear(animated)
    if self.isMovingFromParentViewController {
        if saveButtonPressed != true {
            // here I don't need to execute code the back button is pressed
        } else {
            if let selection = selectedMinutes {
                UserDefaults.standard.set(selection, forKey: "selectedRow")
                print(UserDefaults.standard.object(forKey: "selectedRow")!) // this line prints the actual updated data but I still cannot get it in the parent view controller
            }
        }
    }
}
4

1 回答 1

-2

您应该在设置数据后调用同步 UserDefaults

UserDefaults.standard.set(selection, forKey: "selectedRow")
UserDefaults.standard.synchronize();
于 2017-12-06T18:17:25.353 回答