【发布时间】:2016-06-25 05:46:18
【问题描述】:
我对 swift 很陌生。并且需要你的帮助! 我希望,当用户第二次登录时,应用程序应该直接将其带到名为 CoreView 的下一个视图控制器。它不应该询问细节,但我不知道为什么它不起作用。每次启动应用程序时都会询问详细信息。请检查以下代码。我也没有收到任何错误。除非并且直到应用程序被终止或注销,否则用户应该能够直接登录。
func pref_write()
{
// To write the data to NSUserDefaults
let prefs = NSUserDefaults.standardUserDefaults() // make a reference
print("OTP:\(OTP)")
// Adding values. Creating objects in prefs
prefs.setObject(OTP, forKey: "OTP")
print("check_OTP:\(check_OTP)")
prefs.setObject(U_ID, forKey: "U_ID")
print("Check_U_ID:\(check_U_ID)")
prefs.synchronize()
self.performSegueWithIdentifier("ContinueToCoreView", sender: self)
}
并且在 viewDidLoad 函数中:
override func viewDidLoad()
{
super.viewDidLoad()
//Read the data
self.performSegueWithIdentifier("ContinueToCoreView", sender: self)
pref_write()
let prefs = NSUserDefaults.standardUserDefaults()
check_OTP = prefs.objectForKey("OTP")!
check_U_ID = prefs.objectForKey("U_ID")!
prefs.objectForKey("U_ID")
print("prefs:\(prefs)")
prefs.synchronize()
}
谢谢!
【问题讨论】:
-
如果您只想在应用程序运行时保持状态,而不希望在应用程序终止时保持状态;因此您不需要将状态存储在“UserDefaults”中。无论如何,如果您将某些状态存储在“UserDefaults”中,则应检查存储的值并根据其值做出决定。我在您的代码中看不到对您存储在“UserDefaults”中的值的任何检查。
-
首先,我想存储数据,而不是状态。当我在首选项中创建对象时。它应该存储在那里。如果我有任何错误..请指导我完成这个。我想将详细信息存储在 UserDefaults 中,直到应用程序被终止。
-
在 write 方法中,您正在以正确的方式写入,但在 viewDidLoad 中,您只是读取值而从不检查它们,而且在读取它们之前,您调用的 write 方法可能没有意义。此外,您总是在触发没有意义的“ContinueToCoreView”segue。是你的第一个视图控制器的 viewDidLoad 吗?
-
是的,它是第一个视图控制器。请帮忙..
-
我应该怎么做,保存数据,然后在用户第二次登录时触发 segue..?
标签: ios swift swift2 nsuserdefaults