So in the app I'm creating I have a settings view controller where users can type their information in the textfields and then when they click the done button it loads all that information to labels on the home view controller . How can I save the data in the home view controller with NSUserDefault? I'm using two view controllers.
因此,在我正在创建的应用程序中,我有一个设置视图控制器,用户可以在文本字段中键入他们的信息,然后当他们单击完成按钮时,它将所有信息加载到主视图控制器上的标签。如何使用NSUserDefault将数据保存在主视图控制器中?我正在使用两个视图控制器。
Settings View Controller
设置视图控制器
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")
}
Home View Controller
主视图控制器
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
}
All of these codes work perfect, I'm just wondering if you could help me save the labels in NSUserDefault so every time the app is loaded all the information is still there. I've done a lot of research on this topic, but can find a solution for my problem. Any help would be much appreciated.
所有这些代码都很完美,我只是想知道你是否可以帮我保存NSUserDefault中的标签,所以每次加载应用程序时,所有信息仍然存在。我已就此主题做了大量研究,但可以找到解决我问题的方法。任何帮助将非常感激。
2 个解决方案
#1
1
just use basic Syntax.
只需使用基本语法。
NSUserDefaults.standardUserDefaults().setValue(value, forKey:key)
Save Example:-
NSUserDefaults.standardUserDefaults().setValue(positionTextField.text!, forKey: "position")
Retervie Example:-
position!.text=NSUserDefaults.standardUserDefaults().stringForKey("position")
Note:- Remember key is must be unique
注意: - 记住密钥必须是唯一的
#2
0
I have created following 2 functions which does Saving & Retrieving of Data using NSUserDefault. Refer it and use accordingly.
我创建了以下两个使用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)
}
#1
1
just use basic Syntax.
只需使用基本语法。
NSUserDefaults.standardUserDefaults().setValue(value, forKey:key)
Save Example:-
NSUserDefaults.standardUserDefaults().setValue(positionTextField.text!, forKey: "position")
Retervie Example:-
position!.text=NSUserDefaults.standardUserDefaults().stringForKey("position")
Note:- Remember key is must be unique
注意: - 记住密钥必须是唯一的
#2
0
I have created following 2 functions which does Saving & Retrieving of Data using NSUserDefault. Refer it and use accordingly.
我创建了以下两个使用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)
}