// // TeacherStyleModel.m // // Created by Steven on 2022/4/22 // Copyright (c) 2022 __MyCompanyName__. All rights reserved. // #import "TeacherStyleModel.h" NSString *const kTeacherStyleModelBrowse = @"browse"; NSString *const kTeacherStyleModelUserId = @"userId"; NSString *const kTeacherStyleModelAvatar = @"avatar"; NSString *const kTeacherStyleModelId = @"id"; NSString *const kTeacherStyleModelUpdateTime = @"updateTime"; NSString *const kTeacherStyleModelDescribe = @"describe"; NSString *const kTeacherStyleModelUsername = @"username"; NSString *const kTeacherStyleModelVideoUrl = @"videoUrl"; NSString *const kTeacherStyleModelCreateTime = @"createTime"; NSString *const kTeacherStyleModelLiveing = @"liveing"; NSString *const kTeacherStyleModelCover = @"cover"; @interface TeacherStyleModel () - (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict; @end @implementation TeacherStyleModel @synthesize browse = _browse; @synthesize userId = _userId; @synthesize avatar = _avatar; @synthesize internalBaseClassIdentifier = _internalBaseClassIdentifier; @synthesize updateTime = _updateTime; @synthesize describe = _describe; @synthesize username = _username; @synthesize videoUrl = _videoUrl; @synthesize createTime = _createTime; @synthesize liveing = _liveing; @synthesize cover = _cover; + (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.browse = [self objectOrNilForKey:kTeacherStyleModelBrowse fromDictionary:dict]; self.userId = [self objectOrNilForKey:kTeacherStyleModelUserId fromDictionary:dict]; self.avatar = [self objectOrNilForKey:kTeacherStyleModelAvatar fromDictionary:dict]; self.internalBaseClassIdentifier = [self objectOrNilForKey:kTeacherStyleModelId fromDictionary:dict]; self.updateTime = [self objectOrNilForKey:kTeacherStyleModelUpdateTime fromDictionary:dict]; self.describe = [self objectOrNilForKey:kTeacherStyleModelDescribe fromDictionary:dict]; self.username = [self objectOrNilForKey:kTeacherStyleModelUsername fromDictionary:dict]; self.videoUrl = [self objectOrNilForKey:kTeacherStyleModelVideoUrl fromDictionary:dict]; self.createTime = [self objectOrNilForKey:kTeacherStyleModelCreateTime fromDictionary:dict]; self.liveing = [[self objectOrNilForKey:kTeacherStyleModelLiveing fromDictionary:dict] boolValue]; self.cover = [self objectOrNilForKey:kTeacherStyleModelCover fromDictionary:dict]; } return self; } - (NSDictionary *)dictionaryRepresentation { NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary]; [mutableDict setValue:self.browse forKey:kTeacherStyleModelBrowse]; [mutableDict setValue:self.userId forKey:kTeacherStyleModelUserId]; [mutableDict setValue:self.avatar forKey:kTeacherStyleModelAvatar]; [mutableDict setValue:self.internalBaseClassIdentifier forKey:kTeacherStyleModelId]; [mutableDict setValue:self.updateTime forKey:kTeacherStyleModelUpdateTime]; [mutableDict setValue:self.describe forKey:kTeacherStyleModelDescribe]; [mutableDict setValue:self.username forKey:kTeacherStyleModelUsername]; [mutableDict setValue:self.videoUrl forKey:kTeacherStyleModelVideoUrl]; [mutableDict setValue:self.createTime forKey:kTeacherStyleModelCreateTime]; [mutableDict setValue:[NSNumber numberWithBool:self.liveing] forKey:kTeacherStyleModelLiveing]; [mutableDict setValue:self.cover forKey:kTeacherStyleModelCover]; 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.browse = [aDecoder decodeObjectForKey:kTeacherStyleModelBrowse]; self.userId = [aDecoder decodeObjectForKey:kTeacherStyleModelUserId]; self.avatar = [aDecoder decodeObjectForKey:kTeacherStyleModelAvatar]; self.internalBaseClassIdentifier = [aDecoder decodeObjectForKey:kTeacherStyleModelId]; self.updateTime = [aDecoder decodeObjectForKey:kTeacherStyleModelUpdateTime]; self.describe = [aDecoder decodeObjectForKey:kTeacherStyleModelDescribe]; self.username = [aDecoder decodeObjectForKey:kTeacherStyleModelUsername]; self.videoUrl = [aDecoder decodeObjectForKey:kTeacherStyleModelVideoUrl]; self.createTime = [aDecoder decodeObjectForKey:kTeacherStyleModelCreateTime]; self.liveing = [aDecoder decodeBoolForKey:kTeacherStyleModelLiveing]; self.cover = [aDecoder decodeObjectForKey:kTeacherStyleModelCover]; return self; } - (void)encodeWithCoder:(NSCoder *)aCoder { [aCoder encodeObject:_browse forKey:kTeacherStyleModelBrowse]; [aCoder encodeObject:_userId forKey:kTeacherStyleModelUserId]; [aCoder encodeObject:_avatar forKey:kTeacherStyleModelAvatar]; [aCoder encodeObject:_internalBaseClassIdentifier forKey:kTeacherStyleModelId]; [aCoder encodeObject:_updateTime forKey:kTeacherStyleModelUpdateTime]; [aCoder encodeObject:_describe forKey:kTeacherStyleModelDescribe]; [aCoder encodeObject:_username forKey:kTeacherStyleModelUsername]; [aCoder encodeObject:_videoUrl forKey:kTeacherStyleModelVideoUrl]; [aCoder encodeObject:_createTime forKey:kTeacherStyleModelCreateTime]; [aCoder encodeBool:_liveing forKey:kTeacherStyleModelLiveing]; [aCoder encodeObject:_cover forKey:kTeacherStyleModelCover]; } - (id)copyWithZone:(NSZone *)zone { TeacherStyleModel *copy = [[TeacherStyleModel alloc] init]; if (copy) { copy.browse = [self.browse copyWithZone:zone]; copy.userId = [self.userId copyWithZone:zone]; copy.avatar = [self.avatar copyWithZone:zone]; copy.internalBaseClassIdentifier = [self.internalBaseClassIdentifier copyWithZone:zone]; copy.updateTime = [self.updateTime copyWithZone:zone]; copy.describe = [self.describe copyWithZone:zone]; copy.username = [self.username copyWithZone:zone]; copy.videoUrl = [self.videoUrl copyWithZone:zone]; copy.createTime = [self.createTime copyWithZone:zone]; copy.liveing = self.liveing; copy.cover = [self.cover copyWithZone:zone]; } return copy; } @end