1. 首先,需要确保自定义对象符合NSCoding协议,即实现了encode(with:)和init(coder:)两个方法。这两个方法用于将自定义对象序列化为NSData以便存储,以及从NSData中反序列化自定义对象。
2. 然后,在将自定义对象写入NSUserDefaults时,需要将其转换为NSData类型。这可以通过调用NSKeyedArchiver类的archivedData(withRootObject:)方法实现。参数是要序列化的对象。
3. 接着,将NSData类型的对象存储到NSUserDefaults中,可以通过调用NSUserDefaults的setObject(_:forKey:)方法实现。参数是NSData类型的对象和对应的键值。
4. 当需要从NSUserDefaults中读取自定义对象时,需要先获取对应键值的NSData对象,可以使用NSUserDefaults的object(forKey:)方法实现。
5. 然后,将获取到的NSData对象反序列化为自定义对象,可以通过调用NSKeyedUnarchiver类的unarchiveObject(with:)方法实现。参数是要反序列化的NSData对象。
6. 最后,得到反序列化的自定义对象后就可以使用了。
总结:实现从NSUserDefaults中读取和写入自定义对象需要先确保自定义对象符合NSCoding协议,然后将自定义对象序列化为NSData并存储到NSUserDefaults中,在读取时再将其反序列化为自定义对象即可。