// // NotiferMessageModel.m // // Created by Steven on 2022/5/7 // Copyright (c) 2022 __MyCompanyName__. All rights reserved. // #import "NotiferMessageModel.h" NSString *const kNotiferMessageModelId = @"id"; NSString *const kNotiferMessageModelModifyOn = @"modifyOn"; NSString *const kNotiferMessageModelClientId = @"clientId"; NSString *const kNotiferMessageModelSendTime = @"sendTime"; NSString *const kNotiferMessageModelReceiver = @"receiver"; NSString *const kNotiferMessageModelErrorMsg = @"errorMsg"; NSString *const kNotiferMessageModelCreateOn = @"createOn"; NSString *const kNotiferMessageModelMemo = @"memo"; NSString *const kNotiferMessageModelContent = @"content"; NSString *const kNotiferMessageModelType = @"type"; NSString *const kNotiferMessageModelTitle = @"title"; NSString *const kNotiferMessageModelUserId = @"userId"; NSString *const kNotiferMessageModelGroup = @"group"; NSString *const kNotiferMessageModelReadStatus = @"readStatus"; NSString *const kNotiferMessageModelStatus = @"status"; @interface NotiferMessageModel () - (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict; @end @implementation NotiferMessageModel @synthesize internalBaseClassIdentifier = _internalBaseClassIdentifier; @synthesize modifyOn = _modifyOn; @synthesize clientId = _clientId; @synthesize sendTime = _sendTime; @synthesize receiver = _receiver; @synthesize errorMsg = _errorMsg; @synthesize createOn = _createOn; @synthesize memo = _memo; @synthesize content = _content; @synthesize type = _type; @synthesize title = _title; @synthesize userId = _userId; @synthesize group = _group; @synthesize readStatus = _readStatus; @synthesize status = _status; + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict { return [[self alloc] initWithDictionary:dict]; } - (instancetype)initWithDictionary:(NSDictionary *)dict { self = [super init]; // This check serves to make sure that a non-NSDictionary object // passed into the model class doesn't break the parsing. if(self && [dict isKindOfClass:[NSDictionary class]]) { self.internalBaseClassIdentifier = [self objectOrNilForKey:kNotiferMessageModelId fromDictionary:dict]; self.modifyOn = [self objectOrNilForKey:kNotiferMessageModelModifyOn fromDictionary:dict]; self.clientId = [self objectOrNilForKey:kNotiferMessageModelClientId fromDictionary:dict]; self.sendTime = [self objectOrNilForKey:kNotiferMessageModelSendTime fromDictionary:dict]; self.receiver = [self objectOrNilForKey:kNotiferMessageModelReceiver fromDictionary:dict]; self.errorMsg = [self objectOrNilForKey:kNotiferMessageModelErrorMsg fromDictionary:dict]; self.createOn = [self objectOrNilForKey:kNotiferMessageModelCreateOn fromDictionary:dict]; self.memo = [self objectOrNilForKey:kNotiferMessageModelMemo fromDictionary:dict]; self.content = [self objectOrNilForKey:kNotiferMessageModelContent fromDictionary:dict]; self.type = [self objectOrNilForKey:kNotiferMessageModelType fromDictionary:dict]; self.title = [self objectOrNilForKey:kNotiferMessageModelTitle fromDictionary:dict]; self.userId = [self objectOrNilForKey:kNotiferMessageModelUserId fromDictionary:dict]; self.group = [self objectOrNilForKey:kNotiferMessageModelGroup fromDictionary:dict]; self.readStatus = [[self objectOrNilForKey:kNotiferMessageModelReadStatus fromDictionary:dict] doubleValue]; self.status = [self objectOrNilForKey:kNotiferMessageModelStatus fromDictionary:dict]; } return self; } - (NSDictionary *)dictionaryRepresentation { NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary]; [mutableDict setValue:self.internalBaseClassIdentifier forKey:kNotiferMessageModelId]; [mutableDict setValue:self.modifyOn forKey:kNotiferMessageModelModifyOn]; [mutableDict setValue:self.clientId forKey:kNotiferMessageModelClientId]; [mutableDict setValue:self.sendTime forKey:kNotiferMessageModelSendTime]; [mutableDict setValue:self.receiver forKey:kNotiferMessageModelReceiver]; [mutableDict setValue:self.errorMsg forKey:kNotiferMessageModelErrorMsg]; [mutableDict setValue:self.createOn forKey:kNotiferMessageModelCreateOn]; [mutableDict setValue:self.memo forKey:kNotiferMessageModelMemo]; [mutableDict setValue:self.content forKey:kNotiferMessageModelContent]; [mutableDict setValue:self.type forKey:kNotiferMessageModelType]; [mutableDict setValue:self.title forKey:kNotiferMessageModelTitle]; [mutableDict setValue:self.userId forKey:kNotiferMessageModelUserId]; [mutableDict setValue:self.group forKey:kNotiferMessageModelGroup]; [mutableDict setValue:[NSNumber numberWithDouble:self.readStatus] forKey:kNotiferMessageModelReadStatus]; [mutableDict setValue:self.status forKey:kNotiferMessageModelStatus]; return [NSDictionary dictionaryWithDictionary:mutableDict]; } - (NSString *)description { return [NSString stringWithFormat:@"%@", [self dictionaryRepresentation]]; } #pragma mark - Helper Method - (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict { id object = [dict objectForKey:aKey]; if ([object isKindOfClass:[NSNumber class]]) { NSNumber *number = object; object = [number stringValue]; } return [object isEqual:[NSNull null]] ? nil : object; } #pragma mark - NSCoding Methods - (id)initWithCoder:(NSCoder *)aDecoder { self = [super init]; self.internalBaseClassIdentifier = [aDecoder decodeObjectForKey:kNotiferMessageModelId]; self.modifyOn = [aDecoder decodeObjectForKey:kNotiferMessageModelModifyOn]; self.clientId = [aDecoder decodeObjectForKey:kNotiferMessageModelClientId]; self.sendTime = [aDecoder decodeObjectForKey:kNotiferMessageModelSendTime]; self.receiver = [aDecoder decodeObjectForKey:kNotiferMessageModelReceiver]; self.errorMsg = [aDecoder decodeObjectForKey:kNotiferMessageModelErrorMsg]; self.createOn = [aDecoder decodeObjectForKey:kNotiferMessageModelCreateOn]; self.memo = [aDecoder decodeObjectForKey:kNotiferMessageModelMemo]; self.content = [aDecoder decodeObjectForKey:kNotiferMessageModelContent]; self.type = [aDecoder decodeObjectForKey:kNotiferMessageModelType]; self.title = [aDecoder decodeObjectForKey:kNotiferMessageModelTitle]; self.userId = [aDecoder decodeObjectForKey:kNotiferMessageModelUserId]; self.group = [aDecoder decodeObjectForKey:kNotiferMessageModelGroup]; self.readStatus = [aDecoder decodeDoubleForKey:kNotiferMessageModelReadStatus]; self.status = [aDecoder decodeObjectForKey:kNotiferMessageModelStatus]; return self; } - (void)encodeWithCoder:(NSCoder *)aCoder { [aCoder encodeObject:_internalBaseClassIdentifier forKey:kNotiferMessageModelId]; [aCoder encodeObject:_modifyOn forKey:kNotiferMessageModelModifyOn]; [aCoder encodeObject:_clientId forKey:kNotiferMessageModelClientId]; [aCoder encodeObject:_sendTime forKey:kNotiferMessageModelSendTime]; [aCoder encodeObject:_receiver forKey:kNotiferMessageModelReceiver]; [aCoder encodeObject:_errorMsg forKey:kNotiferMessageModelErrorMsg]; [aCoder encodeObject:_createOn forKey:kNotiferMessageModelCreateOn]; [aCoder encodeObject:_memo forKey:kNotiferMessageModelMemo]; [aCoder encodeObject:_content forKey:kNotiferMessageModelContent]; [aCoder encodeObject:_type forKey:kNotiferMessageModelType]; [aCoder encodeObject:_title forKey:kNotiferMessageModelTitle]; [aCoder encodeObject:_userId forKey:kNotiferMessageModelUserId]; [aCoder encodeObject:_group forKey:kNotiferMessageModelGroup]; [aCoder encodeDouble:_readStatus forKey:kNotiferMessageModelReadStatus]; [aCoder encodeObject:_status forKey:kNotiferMessageModelStatus]; } - (id)copyWithZone:(NSZone *)zone { NotiferMessageModel *copy = [[NotiferMessageModel alloc] init]; if (copy) { copy.internalBaseClassIdentifier = [self.internalBaseClassIdentifier copyWithZone:zone]; copy.modifyOn = [self.modifyOn copyWithZone:zone]; copy.clientId = [self.clientId copyWithZone:zone]; copy.sendTime = [self.sendTime copyWithZone:zone]; copy.receiver = [self.receiver copyWithZone:zone]; copy.errorMsg = [self.errorMsg copyWithZone:zone]; copy.createOn = [self.createOn copyWithZone:zone]; copy.memo = [self.memo copyWithZone:zone]; copy.content = [self.content copyWithZone:zone]; copy.type = [self.type copyWithZone:zone]; copy.title = [self.title copyWithZone:zone]; copy.userId = [self.userId copyWithZone:zone]; copy.group = [self.group copyWithZone:zone]; copy.readStatus = self.readStatus; copy.status = [self.status copyWithZone:zone]; } return copy; } @end