You need your user object to comply with the NSCoding protocol and implement encoding and decoding methods. Once you do this, you can use the encode method to create an NSData object for use with NSUserDefaults.
Something like this in your UserInfo class:
required convenience init?(coder decoder: NSCoder) { self.init() guard let title = decoder.decodeObjectForKey("title") as? String else {return nil } self.title = title } func encodeWithCoder(coder: NSCoder) { coder.encodeObject(self.title, forKey: "title") }
Then you can use the encoded data using NSUserDefaults as follows:
@IBAction func saveBtn(sender: AnyObject) { var userName = nameLbl.text UserInfo.append(User(name: userName)) let data = NSKeyedArchiver.archivedDataWithRootObject(UserInfo) NSUserDefaults.standardUserDefaults().setObject(data, forKey: "UserInfo") userName = "" }
source share