NSUserDefaults上没有显示任何文字

时间:2015-06-26 18:36:47

标签: ios swift xcode6

我有两个视图控制器,我想存储在第二个中输入的“名称”,并在第一个中显示。我已经确定存储了一个值,现在我想存储用户输入的名称。

所以这里是视图控制器的代码,其中应显示名称:

import UIKit

var name = [String]()

class profile: UIViewController {

//Name
@IBOutlet weak var nameTextField: UILabel!

var vornameLabel = String()

override func viewDidLoad() {

    super.viewDidLoad()

    //Name
    nameTextField.text = "\(name)"

    //Vorname speichern
    NSUserDefaults.standardUserDefaults().setObject(name, forKey: "vorname")

    name = NSUserDefaults.standardUserDefaults().objectForKey("vorname") as! [String]

}

这是输入“名称”的第二个视图控制器的代码:

import UIKit

class profileSettings: UIViewController {

    @IBOutlet weak var vornameLabel: UITextField!
    @IBOutlet weak var nachnameLabel: UITextField!

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

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

    @IBAction func addInformation(sender: AnyObject) {

        vornameLabel.text = "\(name)"

        NSUserDefaults.standardUserDefaults().setObject(name, forKey: "vorname")

    }

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

        //in Profil
        var destProfile:profile = segue.destinationViewController as! profile

        destProfile.vornameLabel = vornameLabel.text
        destProfile.nachnameLabel = nachnameLabel.text

    }

}

2 个答案:

答案 0 :(得分:0)

1)如果用户正在输入他们的名字并且成功进入vornameLabel,则在addInformation()中,您将覆盖用户使用“(name)”输入vornameLable的内容,因此您现在已经丢失了用户输入的内容。

2)名称未被设置为任何内容(除非您在代码的另一部分中有未显示的内容)

3)所以1和2在一起意味着vornameLable什么都不包含。

4)即使vornameLable确实包含某些内容,然后在viewDidLoad()中调用setObject,它将覆盖存储到NSUserDefaults中的任何值以及名称中的任何值。

我认为你需要展示更多的代码,这不可能是全部。如果是那么它就没有做任何事情。

收到信息后更新了所发布的代码:

a)名称不包含任何内容,因此您不会将任何内容保存到默认值。将其更改为var name =“我的名字”。

b)更改vornameLabel.text =“(name)”tp vornameLabel.text = name

c)将NSUserDefaults.standardUserDefaults()。setObject(name,forKey:“vorname”)更改为NSUserDefaults.standardUserDefaults()。setObject(vornameLable.text,forKey:“vorname”)

d)在viewDidLoad中删除NSUserDefaults.standardUserDefaults()。setObject(name,forKey:“vorname”)

答案 1 :(得分:0)

是的,请在viewWillAppear中设置您的值:

override func viewWillAppear(animated: Bool)
{
    super.viewWillAppear(animated)

    name = NSUserDefaults.standardUserDefaults().objectForKey("vorname") as! [String]
    nameTextField.text = "\(name)"
}