在Swift中保存NSUserDefault中的标签

时间:2016-08-17 05:27:39

标签: swift uilabel

因此,在我正在创建的应用程序中,我有一个设置视图控制器,用户可以在文本字段中键入他们的信息,然后当他们单击完成按钮时,它会将所有信息加载到主视图控制器上的标签。如何使用NSUserDefault将数据保存在主视图控制器中?我正在使用两个视图控制器。

设置视图控制器

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?){
            let DestViewController = segue.destinationViewController as! home
            DestViewController.NameText = NameTextField.text!
            DestViewController.positionText = positionTextField.text!
            DestViewController.divisionText = divisionTextField.text!
            DestViewController.routeText = routeTextField.text!
            DestViewController.routeText = routeTextField.text!
            DestViewController._picture = _picture.image!

        NSUserDefaults.standardUserDefaults().setValue(NameTextField.text!, forKey: "name")
        NSUserDefaults.standardUserDefaults().setValue(positionTextField.text!, forKey: "position")
        NSUserDefaults.standardUserDefaults().setValue(divisionTextField.text!, forKey: "division")
        NSUserDefaults.standardUserDefaults().setValue(routeTextField.text!, forKey: "route")
        NSUserDefaults.standardUserDefaults().setValue(_picture, forKey: "ImageKey")
        }

主视图控制器

class home: UIViewController, UITextFieldDelegate {
    @IBOutlet weak var Name: UILabel!
    @IBOutlet weak var position: UILabel!
    @IBOutlet weak var division: UILabel!
    @IBOutlet weak var route: UILabel!


   var contacts = MyContacts()
   var NameText = String()
   var positionText = String()
   var divisionText = String()
   var routeText = String()
   var _picture: UIImage!


   override func viewDidLoad() {
    super.viewDidLoad()

Name!.text = NSUserDefaults.standardUserDefaults().stringForKey("name")
position!.text = NSUserDefaults.standardUserDefaults().stringForKey("position")
division!.text = NSUserDefaults.standardUserDefaults().stringForKey("division")
route!.text = NSUserDefaults.standardUserDefaults().stringForKey("route")
Profile!.image = _picture
}

所有这些代码都很完美,我只是想知道你是否可以帮我保存NSUserDefault中的标签,所以每次加载应用程序时,所有信息仍然存在。我已就此主题做了大量研究,但可以找到解决我问题的方法。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

只需使用基本语法:

NSUserDefaults.standardUserDefaults().setValue(value, forKey:key)

保存示例: -

NSUserDefaults.standardUserDefaults().setValue(positionTextField.text!, forKey: "position")

检索示例: -

position!.text=NSUserDefaults.standardUserDefaults().stringForKey("position")

注意:记住密钥必须是唯一的

答案 1 :(得分:0)

我创建了以下2个函数,它们实现了Saving&使用NSUserDefault检索数据。请参考并相应地使用。

func saveDataInUserDefault()
{
    // *** init NSUserDefaults ***
    let userDefaults = NSUserDefaults()

    // *** Init a UIImage, you can use your UIImage instead ***
    let img = UIImage.init(imageLiteral: "image")

    // *** set values in UserDefault as well image ***
    userDefaults.setObject("value of name textfield", forKey: "name")
    userDefaults.setObject("value of position textfield", forKey: "position")
    userDefaults.setObject("value of division textfield", forKey: "division")
    userDefaults.setObject("value of route textfield", forKey: "route")
    // *** convert image to NSData and store it ***
    userDefaults.setObject(UIImageJPEGRepresentation(img, 1.0), forKey: "image")

    // *** save all the changes to NSUserDefaults ***
    userDefaults.synchronize()
}

func getDataFromUserDefaults()
{
    // *** Now lets access all the stored data from user default ***

    // *** init NSUserDefaults ***
    let userDefaults = NSUserDefaults()

    // *** to get normal objects use following ***
    print(userDefaults.objectForKey("name"))

    // *** to load image use following ***
    let img = UIImage(data:userDefaults.objectForKey("image") as! NSData)        
}