VideoCourseModel.m 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. //
  2. // VideoCourseModel.m
  3. //
  4. // Created by Steven on 2022/4/2
  5. // Copyright (c) 2022 __MyCompanyName__. All rights reserved.
  6. //
  7. #import "VideoCourseModel.h"
  8. NSString *const kVideoCourseModelId = @"id";
  9. NSString *const kVideoCourseModelLessonCoverUrl = @"lessonCoverUrl";
  10. NSString *const kVideoCourseModelLessonCount = @"lessonCount";
  11. NSString *const kVideoCourseModelLessonDesc = @"lessonDesc";
  12. NSString *const kVideoCourseModelLessonPrice = @"lessonPrice";
  13. NSString *const kVideoCourseModelCountStudent = @"countStudent";
  14. NSString *const kVideoCourseModelLessonName = @"lessonName";
  15. NSString *const kVideoCourseModelAvatar = @"avatar";
  16. NSString *const kVideoCourseModelLessonSubject = @"lessonSubject";
  17. NSString *const kVideoCourseModelTeacherId = @"teacherId";
  18. NSString *const kVideoCourseModelHotFlag = @"hotFlag";
  19. NSString *const kVideoCourseModelUsername = @"username";
  20. NSString *const kVideoCourseModelCreateTime = @"createTime";
  21. NSString *const kVideoCourseModelAuditStatus = @"auditStatus";
  22. NSString *const kVideoCourseModelSortNumber = @"sortNumber";
  23. NSString *const kVideoCourseModelLessonTag = @"lessonTag";
  24. NSString *const kVideoCourseModelTopFlag = @"topFlag";
  25. NSString *const kVideoCourseModelUpdateTime = @"updateTime";
  26. NSString *const kVideoCourseModelLessonSubjectName = @"lessonSubjectName";
  27. NSString *const kVideoCourseModelPayType = @"payType";
  28. @interface VideoCourseModel ()
  29. - (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict;
  30. @end
  31. @implementation VideoCourseModel
  32. @synthesize internalBaseClassIdentifier = _internalBaseClassIdentifier;
  33. @synthesize lessonCoverUrl = _lessonCoverUrl;
  34. @synthesize lessonCount = _lessonCount;
  35. @synthesize lessonDesc = _lessonDesc;
  36. @synthesize lessonPrice = _lessonPrice;
  37. @synthesize countStudent = _countStudent;
  38. @synthesize lessonName = _lessonName;
  39. @synthesize avatar = _avatar;
  40. @synthesize lessonSubject = _lessonSubject;
  41. @synthesize teacherId = _teacherId;
  42. @synthesize hotFlag = _hotFlag;
  43. @synthesize username = _username;
  44. @synthesize createTime = _createTime;
  45. @synthesize auditStatus = _auditStatus;
  46. @synthesize sortNumber = _sortNumber;
  47. @synthesize lessonTag = _lessonTag;
  48. @synthesize topFlag = _topFlag;
  49. @synthesize updateTime = _updateTime;
  50. @synthesize lessonSubjectName = _lessonSubjectName;
  51. @synthesize payType = _payType;
  52. + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
  53. {
  54. return [[self alloc] initWithDictionary:dict];
  55. }
  56. - (instancetype)initWithDictionary:(NSDictionary *)dict
  57. {
  58. self = [super init];
  59. // This check serves to make sure that a non-NSDictionary object
  60. // passed into the model class doesn't break the parsing.
  61. if(self && [dict isKindOfClass:[NSDictionary class]]) {
  62. self.internalBaseClassIdentifier = [self objectOrNilForKey:kVideoCourseModelId fromDictionary:dict];
  63. self.lessonCoverUrl = [self objectOrNilForKey:kVideoCourseModelLessonCoverUrl fromDictionary:dict];
  64. self.lessonCount = [[self objectOrNilForKey:kVideoCourseModelLessonCount fromDictionary:dict] doubleValue];
  65. self.lessonDesc = [self objectOrNilForKey:kVideoCourseModelLessonDesc fromDictionary:dict];
  66. self.lessonPrice = [[self objectOrNilForKey:kVideoCourseModelLessonPrice fromDictionary:dict] doubleValue];
  67. self.countStudent = [[self objectOrNilForKey:kVideoCourseModelCountStudent fromDictionary:dict] doubleValue];
  68. self.lessonName = [self objectOrNilForKey:kVideoCourseModelLessonName fromDictionary:dict];
  69. self.avatar = [self objectOrNilForKey:kVideoCourseModelAvatar fromDictionary:dict];
  70. self.lessonSubject = [self objectOrNilForKey:kVideoCourseModelLessonSubject fromDictionary:dict];
  71. self.teacherId = [[self objectOrNilForKey:kVideoCourseModelTeacherId fromDictionary:dict] doubleValue];
  72. self.hotFlag = [[self objectOrNilForKey:kVideoCourseModelHotFlag fromDictionary:dict] doubleValue];
  73. self.username = [self objectOrNilForKey:kVideoCourseModelUsername fromDictionary:dict];
  74. self.createTime = [self objectOrNilForKey:kVideoCourseModelCreateTime fromDictionary:dict];
  75. self.auditStatus = [[self objectOrNilForKey:kVideoCourseModelAuditStatus fromDictionary:dict] doubleValue];
  76. self.sortNumber = [[self objectOrNilForKey:kVideoCourseModelSortNumber fromDictionary:dict] doubleValue];
  77. self.lessonTag = [self objectOrNilForKey:kVideoCourseModelLessonTag fromDictionary:dict];
  78. self.topFlag = [[self objectOrNilForKey:kVideoCourseModelTopFlag fromDictionary:dict] doubleValue];
  79. self.updateTime = [self objectOrNilForKey:kVideoCourseModelUpdateTime fromDictionary:dict];
  80. self.lessonSubjectName = [self objectOrNilForKey:kVideoCourseModelLessonSubjectName fromDictionary:dict];
  81. self.payType = [self objectOrNilForKey:kVideoCourseModelPayType fromDictionary:dict];
  82. }
  83. return self;
  84. }
  85. - (NSDictionary *)dictionaryRepresentation
  86. {
  87. NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary];
  88. [mutableDict setValue:self.internalBaseClassIdentifier forKey:kVideoCourseModelId];
  89. [mutableDict setValue:self.lessonCoverUrl forKey:kVideoCourseModelLessonCoverUrl];
  90. [mutableDict setValue:[NSNumber numberWithDouble:self.lessonCount] forKey:kVideoCourseModelLessonCount];
  91. [mutableDict setValue:self.lessonDesc forKey:kVideoCourseModelLessonDesc];
  92. [mutableDict setValue:[NSNumber numberWithDouble:self.lessonPrice] forKey:kVideoCourseModelLessonPrice];
  93. [mutableDict setValue:[NSNumber numberWithDouble:self.countStudent] forKey:kVideoCourseModelCountStudent];
  94. [mutableDict setValue:self.lessonName forKey:kVideoCourseModelLessonName];
  95. [mutableDict setValue:self.avatar forKey:kVideoCourseModelAvatar];
  96. [mutableDict setValue:self.lessonSubject forKey:kVideoCourseModelLessonSubject];
  97. [mutableDict setValue:[NSNumber numberWithDouble:self.teacherId] forKey:kVideoCourseModelTeacherId];
  98. [mutableDict setValue:[NSNumber numberWithDouble:self.hotFlag] forKey:kVideoCourseModelHotFlag];
  99. [mutableDict setValue:self.username forKey:kVideoCourseModelUsername];
  100. [mutableDict setValue:self.createTime forKey:kVideoCourseModelCreateTime];
  101. [mutableDict setValue:[NSNumber numberWithDouble:self.auditStatus] forKey:kVideoCourseModelAuditStatus];
  102. [mutableDict setValue:[NSNumber numberWithDouble:self.sortNumber] forKey:kVideoCourseModelSortNumber];
  103. [mutableDict setValue:self.lessonTag forKey:kVideoCourseModelLessonTag];
  104. [mutableDict setValue:[NSNumber numberWithDouble:self.topFlag] forKey:kVideoCourseModelTopFlag];
  105. [mutableDict setValue:self.updateTime forKey:kVideoCourseModelUpdateTime];
  106. [mutableDict setValue:self.lessonSubjectName forKey:kVideoCourseModelLessonSubjectName];
  107. [mutableDict setValue:self.payType forKey:kVideoCourseModelPayType];
  108. return [NSDictionary dictionaryWithDictionary:mutableDict];
  109. }
  110. - (NSString *)description
  111. {
  112. return [NSString stringWithFormat:@"%@", [self dictionaryRepresentation]];
  113. }
  114. #pragma mark - Helper Method
  115. - (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict
  116. {
  117. id object = [dict objectForKey:aKey];
  118. if ([object isKindOfClass:[NSNumber class]]) {
  119. NSNumber *number = object;
  120. object = [number stringValue];
  121. }
  122. return [object isEqual:[NSNull null]] ? nil : object;
  123. }
  124. #pragma mark - NSCoding Methods
  125. - (id)initWithCoder:(NSCoder *)aDecoder
  126. {
  127. self = [super init];
  128. self.internalBaseClassIdentifier = [aDecoder decodeObjectForKey:kVideoCourseModelId];
  129. self.lessonCoverUrl = [aDecoder decodeObjectForKey:kVideoCourseModelLessonCoverUrl];
  130. self.lessonCount = [aDecoder decodeDoubleForKey:kVideoCourseModelLessonCount];
  131. self.lessonDesc = [aDecoder decodeObjectForKey:kVideoCourseModelLessonDesc];
  132. self.lessonPrice = [aDecoder decodeDoubleForKey:kVideoCourseModelLessonPrice];
  133. self.countStudent = [aDecoder decodeDoubleForKey:kVideoCourseModelCountStudent];
  134. self.lessonName = [aDecoder decodeObjectForKey:kVideoCourseModelLessonName];
  135. self.avatar = [aDecoder decodeObjectForKey:kVideoCourseModelAvatar];
  136. self.lessonSubject = [aDecoder decodeObjectForKey:kVideoCourseModelLessonSubject];
  137. self.teacherId = [aDecoder decodeDoubleForKey:kVideoCourseModelTeacherId];
  138. self.hotFlag = [aDecoder decodeDoubleForKey:kVideoCourseModelHotFlag];
  139. self.username = [aDecoder decodeObjectForKey:kVideoCourseModelUsername];
  140. self.createTime = [aDecoder decodeObjectForKey:kVideoCourseModelCreateTime];
  141. self.auditStatus = [aDecoder decodeDoubleForKey:kVideoCourseModelAuditStatus];
  142. self.sortNumber = [aDecoder decodeDoubleForKey:kVideoCourseModelSortNumber];
  143. self.lessonTag = [aDecoder decodeObjectForKey:kVideoCourseModelLessonTag];
  144. self.topFlag = [aDecoder decodeDoubleForKey:kVideoCourseModelTopFlag];
  145. self.updateTime = [aDecoder decodeObjectForKey:kVideoCourseModelUpdateTime];
  146. self.lessonSubjectName = [aDecoder decodeObjectForKey:kVideoCourseModelLessonSubjectName];
  147. self.payType = [aDecoder decodeObjectForKey:kVideoCourseModelPayType];
  148. return self;
  149. }
  150. - (void)encodeWithCoder:(NSCoder *)aCoder
  151. {
  152. [aCoder encodeObject:_internalBaseClassIdentifier forKey:kVideoCourseModelId];
  153. [aCoder encodeObject:_lessonCoverUrl forKey:kVideoCourseModelLessonCoverUrl];
  154. [aCoder encodeDouble:_lessonCount forKey:kVideoCourseModelLessonCount];
  155. [aCoder encodeObject:_lessonDesc forKey:kVideoCourseModelLessonDesc];
  156. [aCoder encodeDouble:_lessonPrice forKey:kVideoCourseModelLessonPrice];
  157. [aCoder encodeDouble:_countStudent forKey:kVideoCourseModelCountStudent];
  158. [aCoder encodeObject:_lessonName forKey:kVideoCourseModelLessonName];
  159. [aCoder encodeObject:_avatar forKey:kVideoCourseModelAvatar];
  160. [aCoder encodeObject:_lessonSubject forKey:kVideoCourseModelLessonSubject];
  161. [aCoder encodeDouble:_teacherId forKey:kVideoCourseModelTeacherId];
  162. [aCoder encodeDouble:_hotFlag forKey:kVideoCourseModelHotFlag];
  163. [aCoder encodeObject:_username forKey:kVideoCourseModelUsername];
  164. [aCoder encodeObject:_createTime forKey:kVideoCourseModelCreateTime];
  165. [aCoder encodeDouble:_auditStatus forKey:kVideoCourseModelAuditStatus];
  166. [aCoder encodeDouble:_sortNumber forKey:kVideoCourseModelSortNumber];
  167. [aCoder encodeObject:_lessonTag forKey:kVideoCourseModelLessonTag];
  168. [aCoder encodeDouble:_topFlag forKey:kVideoCourseModelTopFlag];
  169. [aCoder encodeObject:_updateTime forKey:kVideoCourseModelUpdateTime];
  170. [aCoder encodeObject:_lessonSubjectName forKey:kVideoCourseModelLessonSubjectName];
  171. [aCoder encodeObject:_payType forKey:kVideoCourseModelPayType];
  172. }
  173. - (id)copyWithZone:(NSZone *)zone
  174. {
  175. VideoCourseModel *copy = [[VideoCourseModel alloc] init];
  176. if (copy) {
  177. copy.internalBaseClassIdentifier = [self.internalBaseClassIdentifier copyWithZone:zone];
  178. copy.lessonCoverUrl = [self.lessonCoverUrl copyWithZone:zone];
  179. copy.lessonCount = self.lessonCount;
  180. copy.lessonDesc = [self.lessonDesc copyWithZone:zone];
  181. copy.lessonPrice = self.lessonPrice;
  182. copy.countStudent = self.countStudent;
  183. copy.lessonName = [self.lessonName copyWithZone:zone];
  184. copy.avatar = [self.avatar copyWithZone:zone];
  185. copy.lessonSubject = [self.lessonSubject copyWithZone:zone];
  186. copy.teacherId = self.teacherId;
  187. copy.hotFlag = self.hotFlag;
  188. copy.username = [self.username copyWithZone:zone];
  189. copy.createTime = [self.createTime copyWithZone:zone];
  190. copy.auditStatus = self.auditStatus;
  191. copy.sortNumber = self.sortNumber;
  192. copy.lessonTag = [self.lessonTag copyWithZone:zone];
  193. copy.topFlag = self.topFlag;
  194. copy.updateTime = [self.updateTime copyWithZone:zone];
  195. copy.lessonSubjectName = [self.lessonSubjectName copyWithZone:zone];
  196. copy.payType = [self.payType copyWithZone:zone];
  197. }
  198. return copy;
  199. }
  200. @end