First, you have to inherit Item from NSObject, with coder & decoder methods:
class Item :NSObject
{
var name: String = ""
var collectionId: Int = 0
init(name: String, collectionId: Int) {
self.name = name
self.collectionId = collectionId
}
init(coder decoder: NSCoder) {
self.name = decoder.decodeObjectForKey("name") as String
self.collectionId = decoder.decodeIntegerForKey("collectionId")
}
func encodeWithCoder(coder: NSCoder) {
coder.encodeObject(self.name, forKey: "name")
coder.encodeInt(Int32(self.collectionId), forKey: "collectionId")
}
}
Then, these are functions to insert & retrieve from NSUserDefaults.
func insertItems()
{
let defaults = NSUserDefaults.standardUserDefaults()
let data = NSKeyedArchiver.archivedDataWithRootObject(itemList)
NSUserDefaults.standardUserDefaults().setObject(data, forKey: "myList")
}
func retrieveItems()
{
let defaults = NSUserDefaults.standardUserDefaults()
if let data = NSUserDefaults.standardUserDefaults().objectForKey("myList") as? NSData {
let _mySavedList = NSKeyedUnarchiver.unarchiveObjectWithData(data) as [Item]
}
}
Example:
let item1 = Item(name: "Item 1", collectionId: 1)
let item2 = Item(name: "Item 2", collectionId: 2)
itemList.append(item1)
itemList.append(item2)
insertItems()
retrieveItems()