HomeMessageModel.m 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. //
  2. // HomeMessageModel.m
  3. //
  4. // Created by Steven on 2022/4/25
  5. // Copyright (c) 2022 __MyCompanyName__. All rights reserved.
  6. //
  7. #import "HomeMessageModel.h"
  8. NSString *const kHomeMessageModelSubType = @"subType";
  9. NSString *const kHomeMessageModelStatus = @"status";
  10. NSString *const kHomeMessageModelTitle = @"title";
  11. NSString *const kHomeMessageModelTypeName = @"typeName";
  12. NSString *const kHomeMessageModelSubTypeName = @"subTypeName";
  13. NSString *const kHomeMessageModelOfflineTime = @"offlineTime";
  14. NSString *const kHomeMessageModelUpdateName = @"updateName";
  15. NSString *const kHomeMessageModelUpdateTime = @"updateTime";
  16. NSString *const kHomeMessageModelOnlineTime = @"onlineTime";
  17. NSString *const kHomeMessageModelMemo = @"memo";
  18. NSString *const kHomeMessageModelSubjectName = @"subjectName";
  19. NSString *const kHomeMessageModelDelFlag = @"delFlag";
  20. NSString *const kHomeMessageModelType = @"type";
  21. NSString *const kHomeMessageModelSubjectIdList = @"subjectIdList";
  22. NSString *const kHomeMessageModelId = @"id";
  23. NSString *const kHomeMessageModelHrefTarget = @"hrefTarget";
  24. NSString *const kHomeMessageModelCoverImage = @"coverImage";
  25. NSString *const kHomeMessageModelShowTime = @"showTime";
  26. NSString *const kHomeMessageModelCreateBy = @"createBy";
  27. NSString *const kHomeMessageModelUpdateBy = @"updateBy";
  28. NSString *const kHomeMessageModelLinkUrl = @"linkUrl";
  29. NSString *const kHomeMessageModelVideoCoverImage = @"videoCoverImage";
  30. NSString *const kHomeMessageModelCreateTime = @"createTime";
  31. NSString *const kHomeMessageModelOrder = @"order";
  32. NSString *const kHomeMessageModelAttribute1 = @"attribute1";
  33. NSString *const kHomeMessageModelContent = @"content";
  34. NSString *const kHomeMessageModelAttribute2 = @"attribute2";
  35. NSString *const kHomeMessageModelLinkType = @"linkType";
  36. @interface HomeMessageModel ()
  37. - (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict;
  38. @end
  39. @implementation HomeMessageModel
  40. @synthesize subType = _subType;
  41. @synthesize status = _status;
  42. @synthesize title = _title;
  43. @synthesize typeName = _typeName;
  44. @synthesize subTypeName = _subTypeName;
  45. @synthesize offlineTime = _offlineTime;
  46. @synthesize updateName = _updateName;
  47. @synthesize updateTime = _updateTime;
  48. @synthesize onlineTime = _onlineTime;
  49. @synthesize memo = _memo;
  50. @synthesize subjectName = _subjectName;
  51. @synthesize delFlag = _delFlag;
  52. @synthesize type = _type;
  53. @synthesize subjectIdList = _subjectIdList;
  54. @synthesize internalBaseClassIdentifier = _internalBaseClassIdentifier;
  55. @synthesize hrefTarget = _hrefTarget;
  56. @synthesize coverImage = _coverImage;
  57. @synthesize showTime = _showTime;
  58. @synthesize createBy = _createBy;
  59. @synthesize updateBy = _updateBy;
  60. @synthesize linkUrl = _linkUrl;
  61. @synthesize videoCoverImage = _videoCoverImage;
  62. @synthesize createTime = _createTime;
  63. @synthesize order = _order;
  64. @synthesize attribute1 = _attribute1;
  65. @synthesize content = _content;
  66. @synthesize attribute2 = _attribute2;
  67. @synthesize linkType = _linkType;
  68. + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
  69. {
  70. return [[self alloc] initWithDictionary:dict];
  71. }
  72. - (instancetype)initWithDictionary:(NSDictionary *)dict
  73. {
  74. self = [super init];
  75. // This check serves to make sure that a non-NSDictionary object
  76. // passed into the model class doesn't break the parsing.
  77. if(self && [dict isKindOfClass:[NSDictionary class]]) {
  78. self.subType = [self objectOrNilForKey:kHomeMessageModelSubType fromDictionary:dict];
  79. self.status = [[self objectOrNilForKey:kHomeMessageModelStatus fromDictionary:dict] doubleValue];
  80. self.title = [self objectOrNilForKey:kHomeMessageModelTitle fromDictionary:dict];
  81. self.typeName = [self objectOrNilForKey:kHomeMessageModelTypeName fromDictionary:dict];
  82. self.subTypeName = [self objectOrNilForKey:kHomeMessageModelSubTypeName fromDictionary:dict];
  83. self.offlineTime = [self objectOrNilForKey:kHomeMessageModelOfflineTime fromDictionary:dict];
  84. self.updateName = [self objectOrNilForKey:kHomeMessageModelUpdateName fromDictionary:dict];
  85. self.updateTime = [self objectOrNilForKey:kHomeMessageModelUpdateTime fromDictionary:dict];
  86. self.onlineTime = [self objectOrNilForKey:kHomeMessageModelOnlineTime fromDictionary:dict];
  87. self.memo = [self objectOrNilForKey:kHomeMessageModelMemo fromDictionary:dict];
  88. self.subjectName = [self objectOrNilForKey:kHomeMessageModelSubjectName fromDictionary:dict];
  89. self.delFlag = [[self objectOrNilForKey:kHomeMessageModelDelFlag fromDictionary:dict] boolValue];
  90. self.type = [[self objectOrNilForKey:kHomeMessageModelType fromDictionary:dict] doubleValue];
  91. self.subjectIdList = [self objectOrNilForKey:kHomeMessageModelSubjectIdList fromDictionary:dict];
  92. self.internalBaseClassIdentifier = [self objectOrNilForKey:kHomeMessageModelId fromDictionary:dict];
  93. self.hrefTarget = [self objectOrNilForKey:kHomeMessageModelHrefTarget fromDictionary:dict];
  94. self.coverImage = [self objectOrNilForKey:kHomeMessageModelCoverImage fromDictionary:dict];
  95. self.showTime = [[self objectOrNilForKey:kHomeMessageModelShowTime fromDictionary:dict] doubleValue];
  96. self.createBy = [[self objectOrNilForKey:kHomeMessageModelCreateBy fromDictionary:dict] doubleValue];
  97. self.updateBy = [[self objectOrNilForKey:kHomeMessageModelUpdateBy fromDictionary:dict] doubleValue];
  98. self.linkUrl = [self objectOrNilForKey:kHomeMessageModelLinkUrl fromDictionary:dict];
  99. self.videoCoverImage = [self objectOrNilForKey:kHomeMessageModelVideoCoverImage fromDictionary:dict];
  100. self.createTime = [self objectOrNilForKey:kHomeMessageModelCreateTime fromDictionary:dict];
  101. self.order = [[self objectOrNilForKey:kHomeMessageModelOrder fromDictionary:dict] doubleValue];
  102. self.attribute1 = [self objectOrNilForKey:kHomeMessageModelAttribute1 fromDictionary:dict];
  103. self.content = [self objectOrNilForKey:kHomeMessageModelContent fromDictionary:dict];
  104. self.attribute2 = [self objectOrNilForKey:kHomeMessageModelAttribute2 fromDictionary:dict];
  105. self.linkType = [self objectOrNilForKey:kHomeMessageModelLinkType fromDictionary:dict];
  106. }
  107. return self;
  108. }
  109. - (NSDictionary *)dictionaryRepresentation
  110. {
  111. NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary];
  112. [mutableDict setValue:self.subType forKey:kHomeMessageModelSubType];
  113. [mutableDict setValue:[NSNumber numberWithDouble:self.status] forKey:kHomeMessageModelStatus];
  114. [mutableDict setValue:self.title forKey:kHomeMessageModelTitle];
  115. [mutableDict setValue:self.typeName forKey:kHomeMessageModelTypeName];
  116. [mutableDict setValue:self.subTypeName forKey:kHomeMessageModelSubTypeName];
  117. [mutableDict setValue:self.offlineTime forKey:kHomeMessageModelOfflineTime];
  118. [mutableDict setValue:self.updateName forKey:kHomeMessageModelUpdateName];
  119. [mutableDict setValue:self.updateTime forKey:kHomeMessageModelUpdateTime];
  120. [mutableDict setValue:self.onlineTime forKey:kHomeMessageModelOnlineTime];
  121. [mutableDict setValue:self.memo forKey:kHomeMessageModelMemo];
  122. [mutableDict setValue:self.subjectName forKey:kHomeMessageModelSubjectName];
  123. [mutableDict setValue:[NSNumber numberWithBool:self.delFlag] forKey:kHomeMessageModelDelFlag];
  124. [mutableDict setValue:[NSNumber numberWithDouble:self.type] forKey:kHomeMessageModelType];
  125. [mutableDict setValue:self.subjectIdList forKey:kHomeMessageModelSubjectIdList];
  126. [mutableDict setValue:self.internalBaseClassIdentifier forKey:kHomeMessageModelId];
  127. [mutableDict setValue:self.hrefTarget forKey:kHomeMessageModelHrefTarget];
  128. [mutableDict setValue:self.coverImage forKey:kHomeMessageModelCoverImage];
  129. [mutableDict setValue:[NSNumber numberWithDouble:self.showTime] forKey:kHomeMessageModelShowTime];
  130. [mutableDict setValue:[NSNumber numberWithDouble:self.createBy] forKey:kHomeMessageModelCreateBy];
  131. [mutableDict setValue:[NSNumber numberWithDouble:self.updateBy] forKey:kHomeMessageModelUpdateBy];
  132. [mutableDict setValue:self.linkUrl forKey:kHomeMessageModelLinkUrl];
  133. [mutableDict setValue:self.videoCoverImage forKey:kHomeMessageModelVideoCoverImage];
  134. [mutableDict setValue:self.createTime forKey:kHomeMessageModelCreateTime];
  135. [mutableDict setValue:[NSNumber numberWithDouble:self.order] forKey:kHomeMessageModelOrder];
  136. [mutableDict setValue:self.attribute1 forKey:kHomeMessageModelAttribute1];
  137. [mutableDict setValue:self.content forKey:kHomeMessageModelContent];
  138. [mutableDict setValue:self.attribute2 forKey:kHomeMessageModelAttribute2];
  139. [mutableDict setValue:self.linkType forKey:kHomeMessageModelLinkType];
  140. return [NSDictionary dictionaryWithDictionary:mutableDict];
  141. }
  142. - (NSString *)description
  143. {
  144. return [NSString stringWithFormat:@"%@", [self dictionaryRepresentation]];
  145. }
  146. #pragma mark - Helper Method
  147. - (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict
  148. {
  149. id object = [dict objectForKey:aKey];
  150. if ([object isKindOfClass:[NSNumber class]]) {
  151. NSNumber *number = object;
  152. object = [number stringValue];
  153. }
  154. return [object isEqual:[NSNull null]] ? nil : object;
  155. }
  156. #pragma mark - NSCoding Methods
  157. - (id)initWithCoder:(NSCoder *)aDecoder
  158. {
  159. self = [super init];
  160. self.subType = [aDecoder decodeObjectForKey:kHomeMessageModelSubType];
  161. self.status = [aDecoder decodeDoubleForKey:kHomeMessageModelStatus];
  162. self.title = [aDecoder decodeObjectForKey:kHomeMessageModelTitle];
  163. self.typeName = [aDecoder decodeObjectForKey:kHomeMessageModelTypeName];
  164. self.subTypeName = [aDecoder decodeObjectForKey:kHomeMessageModelSubTypeName];
  165. self.offlineTime = [aDecoder decodeObjectForKey:kHomeMessageModelOfflineTime];
  166. self.updateName = [aDecoder decodeObjectForKey:kHomeMessageModelUpdateName];
  167. self.updateTime = [aDecoder decodeObjectForKey:kHomeMessageModelUpdateTime];
  168. self.onlineTime = [aDecoder decodeObjectForKey:kHomeMessageModelOnlineTime];
  169. self.memo = [aDecoder decodeObjectForKey:kHomeMessageModelMemo];
  170. self.subjectName = [aDecoder decodeObjectForKey:kHomeMessageModelSubjectName];
  171. self.delFlag = [aDecoder decodeBoolForKey:kHomeMessageModelDelFlag];
  172. self.type = [aDecoder decodeDoubleForKey:kHomeMessageModelType];
  173. self.subjectIdList = [aDecoder decodeObjectForKey:kHomeMessageModelSubjectIdList];
  174. self.internalBaseClassIdentifier = [aDecoder decodeObjectForKey:kHomeMessageModelId];
  175. self.hrefTarget = [aDecoder decodeObjectForKey:kHomeMessageModelHrefTarget];
  176. self.coverImage = [aDecoder decodeObjectForKey:kHomeMessageModelCoverImage];
  177. self.showTime = [aDecoder decodeDoubleForKey:kHomeMessageModelShowTime];
  178. self.createBy = [aDecoder decodeDoubleForKey:kHomeMessageModelCreateBy];
  179. self.updateBy = [aDecoder decodeDoubleForKey:kHomeMessageModelUpdateBy];
  180. self.linkUrl = [aDecoder decodeObjectForKey:kHomeMessageModelLinkUrl];
  181. self.videoCoverImage = [aDecoder decodeObjectForKey:kHomeMessageModelVideoCoverImage];
  182. self.createTime = [aDecoder decodeObjectForKey:kHomeMessageModelCreateTime];
  183. self.order = [aDecoder decodeDoubleForKey:kHomeMessageModelOrder];
  184. self.attribute1 = [aDecoder decodeObjectForKey:kHomeMessageModelAttribute1];
  185. self.content = [aDecoder decodeObjectForKey:kHomeMessageModelContent];
  186. self.attribute2 = [aDecoder decodeObjectForKey:kHomeMessageModelAttribute2];
  187. self.linkType = [aDecoder decodeObjectForKey:kHomeMessageModelLinkType];
  188. return self;
  189. }
  190. - (void)encodeWithCoder:(NSCoder *)aCoder
  191. {
  192. [aCoder encodeObject:_subType forKey:kHomeMessageModelSubType];
  193. [aCoder encodeDouble:_status forKey:kHomeMessageModelStatus];
  194. [aCoder encodeObject:_title forKey:kHomeMessageModelTitle];
  195. [aCoder encodeObject:_typeName forKey:kHomeMessageModelTypeName];
  196. [aCoder encodeObject:_subTypeName forKey:kHomeMessageModelSubTypeName];
  197. [aCoder encodeObject:_offlineTime forKey:kHomeMessageModelOfflineTime];
  198. [aCoder encodeObject:_updateName forKey:kHomeMessageModelUpdateName];
  199. [aCoder encodeObject:_updateTime forKey:kHomeMessageModelUpdateTime];
  200. [aCoder encodeObject:_onlineTime forKey:kHomeMessageModelOnlineTime];
  201. [aCoder encodeObject:_memo forKey:kHomeMessageModelMemo];
  202. [aCoder encodeObject:_subjectName forKey:kHomeMessageModelSubjectName];
  203. [aCoder encodeBool:_delFlag forKey:kHomeMessageModelDelFlag];
  204. [aCoder encodeDouble:_type forKey:kHomeMessageModelType];
  205. [aCoder encodeObject:_subjectIdList forKey:kHomeMessageModelSubjectIdList];
  206. [aCoder encodeObject:_internalBaseClassIdentifier forKey:kHomeMessageModelId];
  207. [aCoder encodeObject:_hrefTarget forKey:kHomeMessageModelHrefTarget];
  208. [aCoder encodeObject:_coverImage forKey:kHomeMessageModelCoverImage];
  209. [aCoder encodeDouble:_showTime forKey:kHomeMessageModelShowTime];
  210. [aCoder encodeDouble:_createBy forKey:kHomeMessageModelCreateBy];
  211. [aCoder encodeDouble:_updateBy forKey:kHomeMessageModelUpdateBy];
  212. [aCoder encodeObject:_linkUrl forKey:kHomeMessageModelLinkUrl];
  213. [aCoder encodeObject:_videoCoverImage forKey:kHomeMessageModelVideoCoverImage];
  214. [aCoder encodeObject:_createTime forKey:kHomeMessageModelCreateTime];
  215. [aCoder encodeDouble:_order forKey:kHomeMessageModelOrder];
  216. [aCoder encodeObject:_attribute1 forKey:kHomeMessageModelAttribute1];
  217. [aCoder encodeObject:_content forKey:kHomeMessageModelContent];
  218. [aCoder encodeObject:_attribute2 forKey:kHomeMessageModelAttribute2];
  219. [aCoder encodeObject:_linkType forKey:kHomeMessageModelLinkType];
  220. }
  221. - (id)copyWithZone:(NSZone *)zone
  222. {
  223. HomeMessageModel *copy = [[HomeMessageModel alloc] init];
  224. if (copy) {
  225. copy.subType = [self.subType copyWithZone:zone];
  226. copy.status = self.status;
  227. copy.title = [self.title copyWithZone:zone];
  228. copy.typeName = [self.typeName copyWithZone:zone];
  229. copy.subTypeName = [self.subTypeName copyWithZone:zone];
  230. copy.offlineTime = [self.offlineTime copyWithZone:zone];
  231. copy.updateName = [self.updateName copyWithZone:zone];
  232. copy.updateTime = [self.updateTime copyWithZone:zone];
  233. copy.onlineTime = [self.onlineTime copyWithZone:zone];
  234. copy.memo = [self.memo copyWithZone:zone];
  235. copy.subjectName = [self.subjectName copyWithZone:zone];
  236. copy.delFlag = self.delFlag;
  237. copy.type = self.type;
  238. copy.subjectIdList = [self.subjectIdList copyWithZone:zone];
  239. copy.internalBaseClassIdentifier = [self.internalBaseClassIdentifier copyWithZone:zone];
  240. copy.hrefTarget = [self.hrefTarget copyWithZone:zone];
  241. copy.coverImage = [self.coverImage copyWithZone:zone];
  242. copy.showTime = self.showTime;
  243. copy.createBy = self.createBy;
  244. copy.updateBy = self.updateBy;
  245. copy.linkUrl = [self.linkUrl copyWithZone:zone];
  246. copy.videoCoverImage = [self.videoCoverImage copyWithZone:zone];
  247. copy.createTime = [self.createTime copyWithZone:zone];
  248. copy.order = self.order;
  249. copy.attribute1 = [self.attribute1 copyWithZone:zone];
  250. copy.content = [self.content copyWithZone:zone];
  251. copy.attribute2 = [self.attribute2 copyWithZone:zone];
  252. copy.linkType = [self.linkType copyWithZone:zone];
  253. }
  254. return copy;
  255. }
  256. @end