在NSUserDefault中存储对象后,我有自定义对象问题描述与NSCoding协议我只得到两个(patProbId,patientId)属性,其余为空 -
@property (nonatomic, strong) NSString *patProbId;
@property (nonatomic, strong) NSString *patientId;
@property (nonatomic, strong) NSString *visitId;
@property (nonatomic, strong) NSString *doctorId;
@property (nonatomic, strong) NSString *description;
@property (nonatomic, strong) NSString *status;
@property (nonatomic, strong) NSString *diagonisedDate;
@property (nonatomic, strong) NSString *audModTs;
(id)initWithCoder:(NSCoder *)decoder {
self = [super init];
if (!self) {
return nil;
}
self.patProbId = [decoder decodeObjectForKey:Dict_patProbId];
self.patientId = [decoder decodeObjectForKey:Dict_patientId];
self.visitId = [decoder decodeObjectForKey:Dict_visitId];
self.doctorId = [decoder decodeObjectForKey:Dict_doctorId];
self.description = [decoder decodeObjectForKey:Dict_description];
self.status = [decoder decodeObjectForKey:Dict_status];
self.diagonisedDate = [decoder decodeObjectForKey:Dict_diagonisedDate];
self.audModTs = [decoder decodeObjectForKey:Dict_audModTs];
return self;
}
- (void)encodeWithCoder:(NSCoder *)encoder {
[encoder encodeObject:self.patProbId forKey:Dict_patProbId];
[encoder encodeObject:self.patientId forKey:Dict_patientId];
[encoder encodeBool:self.visitId forKey:Dict_visitId];
[encoder encodeBool:self.doctorId forKey:Dict_doctorId];
[encoder encodeBool:self.description forKey:Dict_description];
[encoder encodeBool:self.status forKey:Dict_status];
[encoder encodeBool:self.diagonisedDate forKey:Dict_diagonisedDate];
[encoder encodeBool:self.audModTs forKey:Dict_audModTs];
}
答案 0 :(得分:0)
您正在编码Bool但解码对象。您需要为编码和解码使用相同的类型
编辑: 在评论中,您提到所有属性都是NSString类型,这很好,但在这种情况下,您需要将它们编码为Object
[encoder encodeBool:self.visitId forKey:Dict_visitId];
如您所见,您将它们编码为Bool,而不是对象。前两个属性都很好,这就是为什么它们工作,而其余属性被编码为Bool,这就是为什么他们不能工作