Swift Userdefault不在didFinishLaunchingWithOptions方法中存储值
我试图在Swift Userdefault不在didFinishLaunchingWithOptions方法中存储值,swift,Swift,我试图在应用程序启动时使用Userdefault存储一些值。在这里,我将userdefault存储代码放在appdidfinishlaunching方法中,并尝试将值放入我的主viewcontroller。应用程序第一次启动时间不是接收值,而是第二次接收值。如何解决这个问题 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.Launc
应用程序启动时使用Userdefault
存储一些值。在这里,我将userdefault存储代码放在appdidfinishlaunching
方法中,并尝试将值放入我的主viewcontroller
。应用程序第一次启动时间不是接收值,而是第二次接收值。如何解决这个问题
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
if ((UserDefaults.standard.object(forKey: "From_Name") == nil) && (UserDefaults.standard.object(forKey: "To_Name") == nil)) {
// Override point for customization after application launch.
UserDefaults.standard.set("0", forKey: "DFrom_ID") //setObject
}
我的主视图控制器
override func viewDidLoad() {
super.viewDidLoad()
print("\(UserDefaults.standard.string(forKey: "DFrom_ID"))")
return true
}
从MainViewController中的ViewDidLoad到ViewDidAspect方法中删除代码。您的代码有点混乱<代码>返回真值
属于didfishlaunchingwithoptions
和“DFrom_ID”!=“从您的ID”。该行为是正常的,因为视图控制器中的viewDidLoad
调用早于didfishlaunchwithoptions
。如果我在viewDidLoad中存储,它也不会在第一时间@vadian存储您在viewDidLoad
print中获得的内容?可以添加断点并进行调试吗it@vadian我认为didfishlaunchingwithoptions
是在viewdiload
@Sh_Khan之前调用的,根据我的经验,它不是。
func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated);
print("\(UserDefaults.standard.string(forKey: "DFrom_ID"))")
}