UserDefaults值无法正常工作

问题描述 投票:-1回答:1

我尝试使用UserDefaults值修改我的对象。我检查UserDefaults是true还是false的一些viewController,但有时它读为true有时是false。为什么会发生这种情况。我知道这是一个复杂的问题,但是当用户返回应用程序以查看其他应用程序时,我试图在关闭应用程序后更改应用程序中的UserDefaults值。这就是为什么我不得不更改userDefaults值但其无法正常工作莫名其妙地卡住了。

在我的服务内:

 if response.products.count == 0 {

        print("no products in app store at  current time")
      UserDefaults.standard.set(false, forKey: "isBool")
        UserDefaults.standard.synchronize()
        DispatchQueue.main.async {
            AppDelegate.group.leave()

        }


    } else {
         UserDefaults.standard.setValue(true, forKey: "isBool")
        UserDefaults.standard.synchronize()
        DispatchQueue.main.async {
            AppDelegate.group.leave()

        }

    }

在AppDelegate中:

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    var success:Bool =  true  }
    AppDelegate.group.enter()Service.shared.getProducts()

/ *

    if           UserDefaults.standard.value(forKey: "isBool") 

{

        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let vc = storyboard.instantiateViewController(withIdentifier: "mainstoryboard")
        self.window?.rootViewController = vc





    }
 */

    AppDelegate.group.notify(queue: .main) {
         success = true

    }


    return  success


}
ios swift nsuserdefaults appdelegate userdefaults
1个回答
0
投票

我认为您在这里做错了

只需替换此行

AppDelegate.userDefaults.value(forKey: "isBool")  as! Bool 

UserDefaults.standard.value(forKey: "isBool") 

//完整代码

AppDelegate.isBool = AppDelegate.userDefaults.value(forKey: "isBool")  as! Bool


AppDelegate.isBool =  UserDefaults.standard.value(forKey: "isBool")  as! Bool
    if AppDelegate.isBool== true {

        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let vc = storyboard.instantiateViewController(withIdentifier: "mainstoryboard")
        self.window?.rootViewController = vc

    }
© www.soinside.com 2019 - 2024. All rights reserved.