因此,在我正在创建的应用程序中,我有一个设置视图控制器,用户可以在文本字段中键入他们的信息,然后当他们单击完成按钮时,它会将所有信息加载到主视图控制器上的标签。如何使用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中的标签,所以每次加载应用程序时,所有信息仍然存在。我已就此主题做了大量研究,但可以找到解决我问题的方法。任何帮助将不胜感激。
答案 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)
}