Ios 组合自定义类的N编码
我有一个自定义类Ios 组合自定义类的N编码,ios,objective-c,Ios,Objective C,我有一个自定义类 @interface MyDevice : NSObject,<NSCoding>{ NSString *devicename; . . MyBattery *batteryInfo; } 但是说NSKeyedArchiver archivedDataWithRootObject:不调用encodeWithCoder,这是很糟糕的。我试着为我的电池编码。但同样的结果。有人能给它点颜色看看吗?要想让它正常工作,您的自定义类MyBattery本身应该符合NSCodin
@interface MyDevice : NSObject,<NSCoding>{
NSString *devicename;
.
.
MyBattery *batteryInfo;
}
但是说
NSKeyedArchiver archivedDataWithRootObject:
不调用encodeWithCoder,这是很糟糕的。我试着为我的电池编码。但同样的结果。有人能给它点颜色看看吗?要想让它正常工作,您的自定义类MyBattery本身应该符合NSCoding
如果是,尝试使用下面的电池信息
NSData * encodedData = [NSKeyedArchiver archivedDataWithRootObject:batteryInfo];
[[NSUserDefaults standardUserDefaults] setObject:encodedData forKey:@"batteryInfo"];
还可以使用NSKeyedUnarchiver进行解码
NSData *data= [[NSUserDefaults standardUserDefaults] objectForKey:@"batteryInfo"];
MyBattery *batteryInfo= [NSKeyedUnarchiver unarchiveObjectWithData:data];
您需要将数据保存在NSDEFAULT或某些文件中
请验证结果并告知。您的
MyBattery
课程还需要符合NSCoding
协议。是的。MyBattery也是NSCoding兼容的。我需要MyDevice的一个编码对象(也对合成对象进行编码)通过NSNotiifcation发送对象。我的要求是不要像NSuserdefaults那样使用持久数据。你的意思是,上面的代码要添加到MyDevice的编码器中吗?是的,这应该是MyDevice类的一部分,用于存档MyBattery。由于您需要传输对象,只需跳过NSdefaults中的保存。谢谢bllakjakkless。问题解决了。我按照你的建议为batteryInfo添加了编码和解码。非常感谢。
NSData *data= [[NSUserDefaults standardUserDefaults] objectForKey:@"batteryInfo"];
MyBattery *batteryInfo= [NSKeyedUnarchiver unarchiveObjectWithData:data];