从属性列表编程指南中:
如果属性列表对象是容器(即数组或字典),则其中包含的所有对象也必须是属性列表对象。如果数组或字典包含的对象不是属性列表对象,则无法使用各种属性列表方法和函数来保存和还原数据的层次结构。
您需要
NSData使用
NSKeyedArchiver和将对象与实例进行相互转换
NSKeyedUnarchiver。
例如:
func savePlaces(){ let placesArray = [Place(lat: 123, lng: 123, name: "hi")] let placesData = NSKeyedArchiver.archivedDataWithRootObject(placesArray) NSUserDefaults.standardUserDefaults().setObject(placesData, forKey: "places")}func loadPlaces(){ let placesData = NSUserDefaults.standardUserDefaults().objectForKey("places") as? NSData if let placesData = placesData { let placesArray = NSKeyedUnarchiver.unarchiveObjectWithData(placesData) as? [Place] if let placesArray = placesArray { // do something… } }}


