class AddBodyMeasurments
{
static let sharedInstance = AddBodyMeasurments()
var BodyMeasurements:AddMeasurment!
private init()
{
BodyMeasurements = AddMeasurment.init(json: [:])
}
func SaveValue(value:AddMeasurment)
{
BodyMeasurements = value
}
}
我尝试了以下内容:
let data = NSKeyedArchiver.archivedDataWithRootObject(obj)
NSUserDefaults.standardUserDefaults().setObject(data, forKey: "folks")
我收到以下错误:
2017-08-17 12:37:46.009 Fiyre [15749:1061631] *** NSForwarding: 警告:'Fiyre.AddBodyMeasurments'类的对象0x7fca71d18700 没有实现methodSignatureForSelector: - 提前麻烦 无法识别的选择器 - [Fiyre.AddBodyMeasurments replacementObjectForKeyedArchiver:]
谢谢你。
答案 0 :(得分:1)
错误消息显示该类未从NSObject
继承。
NSObject
的继承才能符合NSCoding
。 NSCoding
。答案 1 :(得分:0)
实际上,您一般不会保存单个对象,而是保存对象。在反序列化对象(从NSUserDefaults获取其实例)之后,您将该实例存储到您的单例对象中,或者更准确地说,您将使用反序列化对象实例化您的单例对象。
class AddBodyMeasurments
{
static let sharedInstance = AddBodyMeasurments()
var bodyMeasurements:AddMeasurment!
private init()
{
// deserializing object of AddBodyMeasurments type from NSDefaults.
let deserialized = getFromUserDefaults()
self.bodyMeasurements = deserialized.bodyMeasurements
}
}