斯威夫特4注意
您可以再次在Playground中保存/测试您的值
迅捷3
UserDefaults需要在真实项目中进行测试。注意:无需强制同步。如果要在运动场中测试编码/解码,则可以使用键控存档器将数据保存到文档目录中的plist文件中。您还需要修复班级中的一些问题:
class Person: NSObject, NSCoding { let name: String let age: Int init(name: String, age: Int) { self.name = name self.age = age } required init(prer deprer: NSCoder) { self.name = deprer.depreObject(forKey: "name") as? String ?? "" self.age = deprer.depreInteger(forKey: "age") } func enpre(with prer: NSCoder) { prer.enpre(name, forKey: "name") prer.enpre(age, forKey: "age") }}测试:
class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // setting a value for a key let newPerson = Person(name: "Joe", age: 10) var people = [Person]() people.append(newPerson) let enpredData = NSKeyedArchiver.archivedData(withRootObject: people) UserDefaults.standard.set(enpredData, forKey: "people") // retrieving a value for a key if let data = UserDefaults.standard.data(forKey: "people"), let myPeopleList = NSKeyedUnarchiver.unarchiveObject(with: data) as? [Person] { myPeopleList.forEach({print( $0.name, $0.age)}) // Joe 10 } else { print("There is an issue") } }}


