Swift Label.text = NSUserDefaults

时间:2016-05-22 10:15:07

标签: swift nsuserdefaults

我一直在尝试将usernameLabel.text设置为存储在NSUserDefaults中的loggedIn名称。 调试时我可以看到NSUser确实有正确的字符串,这里是代码:

@IBOutlet weak var usernameLabel:: UILabel!

override func viewDidLoad(){
  super.viewDidLoad() 
}

override func viewDidApeear(animated: Bool)
{
  let username = NSUserDefaults.standardUserDefaults().stringForKey("userName")
  if(username != nil) {
    self.usernameLabel.text = username;
  }

}

编辑:这就是我在ViewController课程中的代码。在我的signup课程中,我按照以下方式存储:

NSUserDefaults.standardUserDefaults().setObject(userName, forKey: "userName");
NSUserDefaults.standardUserDefaults().synchronize();

3 个答案:

答案 0 :(得分:0)

您的代码是正确的。如果没有为UILabel在Storyboard或Xib中正确设置插座,可能会出现此问题。无论如何使用print()靠近您的标签进行检查。请尝试以下代码。

if(username != nil) {
self.usernameLabel.text = "\(username)";
 print("UserName:\(username)")
}

答案 1 :(得分:0)

您的代码非常完美。 在这里你可以看到它适合我。

Code Image

输出您的代码。 1. InSimulator

output

2.使用打印

Output1

尝试清理项目并重新运行应用或更改forKey值。

答案 2 :(得分:-1)

它很容易解决,你必须强迫它。使用:

NSUserDefaults.standardUserDefaults().stringForKey("userName")

会给你一个可选对象。要获得所需的正确字符串,您应该:

let username = NSUserDefaults.standardUserDefaults().stringForKey("userName") as String!

这将为您提供一个字符串,其中包含在NSUserDefaults.standardUserDefaults上存储为用户名的内容。