NotiferMessageModel.m 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. //
  2. // NotiferMessageModel.m
  3. //
  4. // Created by Steven on 2022/5/7
  5. // Copyright (c) 2022 __MyCompanyName__. All rights reserved.
  6. //
  7. #import "NotiferMessageModel.h"
  8. NSString *const kNotiferMessageModelId = @"id";
  9. NSString *const kNotiferMessageModelModifyOn = @"modifyOn";
  10. NSString *const kNotiferMessageModelClientId = @"clientId";
  11. NSString *const kNotiferMessageModelSendTime = @"sendTime";
  12. NSString *const kNotiferMessageModelReceiver = @"receiver";
  13. NSString *const kNotiferMessageModelErrorMsg = @"errorMsg";
  14. NSString *const kNotiferMessageModelCreateOn = @"createOn";
  15. NSString *const kNotiferMessageModelMemo = @"memo";
  16. NSString *const kNotiferMessageModelContent = @"content";
  17. NSString *const kNotiferMessageModelType = @"type";
  18. NSString *const kNotiferMessageModelTitle = @"title";
  19. NSString *const kNotiferMessageModelUserId = @"userId";
  20. NSString *const kNotiferMessageModelGroup = @"group";
  21. NSString *const kNotiferMessageModelReadStatus = @"readStatus";
  22. NSString *const kNotiferMessageModelStatus = @"status";
  23. NSString *const kNotiferMessageModelSubType = @"subType";
  24. @interface NotiferMessageModel ()
  25. - (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict;
  26. @end
  27. @implementation NotiferMessageModel
  28. @synthesize internalBaseClassIdentifier = _internalBaseClassIdentifier;
  29. @synthesize modifyOn = _modifyOn;
  30. @synthesize clientId = _clientId;
  31. @synthesize sendTime = _sendTime;
  32. @synthesize receiver = _receiver;
  33. @synthesize errorMsg = _errorMsg;
  34. @synthesize createOn = _createOn;
  35. @synthesize memo = _memo;
  36. @synthesize content = _content;
  37. @synthesize type = _type;
  38. @synthesize title = _title;
  39. @synthesize userId = _userId;
  40. @synthesize group = _group;
  41. @synthesize readStatus = _readStatus;
  42. @synthesize status = _status;
  43. @synthesize subType = _subType;
  44. + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
  45. {
  46. return [[self alloc] initWithDictionary:dict];
  47. }
  48. - (instancetype)initWithDictionary:(NSDictionary *)dict
  49. {
  50. self = [super init];
  51. // This check serves to make sure that a non-NSDictionary object
  52. // passed into the model class doesn't break the parsing.
  53. if(self && [dict isKindOfClass:[NSDictionary class]]) {
  54. self.internalBaseClassIdentifier = [self objectOrNilForKey:kNotiferMessageModelId fromDictionary:dict];
  55. self.modifyOn = [self objectOrNilForKey:kNotiferMessageModelModifyOn fromDictionary:dict];
  56. self.clientId = [self objectOrNilForKey:kNotiferMessageModelClientId fromDictionary:dict];
  57. self.sendTime = [self objectOrNilForKey:kNotiferMessageModelSendTime fromDictionary:dict];
  58. self.receiver = [self objectOrNilForKey:kNotiferMessageModelReceiver fromDictionary:dict];
  59. self.errorMsg = [self objectOrNilForKey:kNotiferMessageModelErrorMsg fromDictionary:dict];
  60. self.createOn = [self objectOrNilForKey:kNotiferMessageModelCreateOn fromDictionary:dict];
  61. self.memo = [self objectOrNilForKey:kNotiferMessageModelMemo fromDictionary:dict];
  62. self.content = [self objectOrNilForKey:kNotiferMessageModelContent fromDictionary:dict];
  63. self.type = [self objectOrNilForKey:kNotiferMessageModelType fromDictionary:dict];
  64. self.title = [self objectOrNilForKey:kNotiferMessageModelTitle fromDictionary:dict];
  65. self.userId = [self objectOrNilForKey:kNotiferMessageModelUserId fromDictionary:dict];
  66. self.group = [self objectOrNilForKey:kNotiferMessageModelGroup fromDictionary:dict];
  67. self.readStatus = [[self objectOrNilForKey:kNotiferMessageModelReadStatus fromDictionary:dict] doubleValue];
  68. self.status = [self objectOrNilForKey:kNotiferMessageModelStatus fromDictionary:dict];
  69. self.subType = [self objectOrNilForKey:kNotiferMessageModelSubType fromDictionary:dict];
  70. }
  71. return self;
  72. }
  73. - (NSDictionary *)dictionaryRepresentation
  74. {
  75. NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary];
  76. [mutableDict setValue:self.internalBaseClassIdentifier forKey:kNotiferMessageModelId];
  77. [mutableDict setValue:self.modifyOn forKey:kNotiferMessageModelModifyOn];
  78. [mutableDict setValue:self.clientId forKey:kNotiferMessageModelClientId];
  79. [mutableDict setValue:self.sendTime forKey:kNotiferMessageModelSendTime];
  80. [mutableDict setValue:self.receiver forKey:kNotiferMessageModelReceiver];
  81. [mutableDict setValue:self.errorMsg forKey:kNotiferMessageModelErrorMsg];
  82. [mutableDict setValue:self.createOn forKey:kNotiferMessageModelCreateOn];
  83. [mutableDict setValue:self.memo forKey:kNotiferMessageModelMemo];
  84. [mutableDict setValue:self.content forKey:kNotiferMessageModelContent];
  85. [mutableDict setValue:self.type forKey:kNotiferMessageModelType];
  86. [mutableDict setValue:self.title forKey:kNotiferMessageModelTitle];
  87. [mutableDict setValue:self.userId forKey:kNotiferMessageModelUserId];
  88. [mutableDict setValue:self.group forKey:kNotiferMessageModelGroup];
  89. [mutableDict setValue:[NSNumber numberWithDouble:self.readStatus] forKey:kNotiferMessageModelReadStatus];
  90. [mutableDict setValue:self.status forKey:kNotiferMessageModelStatus];
  91. [mutableDict setValue:self.subType forKey:kNotiferMessageModelSubType];
  92. return [NSDictionary dictionaryWithDictionary:mutableDict];
  93. }
  94. - (NSString *)description
  95. {
  96. return [NSString stringWithFormat:@"%@", [self dictionaryRepresentation]];
  97. }
  98. #pragma mark - Helper Method
  99. - (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict
  100. {
  101. id object = [dict objectForKey:aKey];
  102. if ([object isKindOfClass:[NSNumber class]]) {
  103. NSNumber *number = object;
  104. object = [number stringValue];
  105. }
  106. return [object isEqual:[NSNull null]] ? nil : object;
  107. }
  108. #pragma mark - NSCoding Methods
  109. - (id)initWithCoder:(NSCoder *)aDecoder
  110. {
  111. self = [super init];
  112. self.internalBaseClassIdentifier = [aDecoder decodeObjectForKey:kNotiferMessageModelId];
  113. self.modifyOn = [aDecoder decodeObjectForKey:kNotiferMessageModelModifyOn];
  114. self.clientId = [aDecoder decodeObjectForKey:kNotiferMessageModelClientId];
  115. self.sendTime = [aDecoder decodeObjectForKey:kNotiferMessageModelSendTime];
  116. self.receiver = [aDecoder decodeObjectForKey:kNotiferMessageModelReceiver];
  117. self.errorMsg = [aDecoder decodeObjectForKey:kNotiferMessageModelErrorMsg];
  118. self.createOn = [aDecoder decodeObjectForKey:kNotiferMessageModelCreateOn];
  119. self.memo = [aDecoder decodeObjectForKey:kNotiferMessageModelMemo];
  120. self.content = [aDecoder decodeObjectForKey:kNotiferMessageModelContent];
  121. self.type = [aDecoder decodeObjectForKey:kNotiferMessageModelType];
  122. self.title = [aDecoder decodeObjectForKey:kNotiferMessageModelTitle];
  123. self.userId = [aDecoder decodeObjectForKey:kNotiferMessageModelUserId];
  124. self.group = [aDecoder decodeObjectForKey:kNotiferMessageModelGroup];
  125. self.readStatus = [aDecoder decodeDoubleForKey:kNotiferMessageModelReadStatus];
  126. self.status = [aDecoder decodeObjectForKey:kNotiferMessageModelStatus];
  127. self.subType = [aDecoder decodeObjectForKey:kNotiferMessageModelSubType];
  128. return self;
  129. }
  130. - (void)encodeWithCoder:(NSCoder *)aCoder
  131. {
  132. [aCoder encodeObject:_internalBaseClassIdentifier forKey:kNotiferMessageModelId];
  133. [aCoder encodeObject:_modifyOn forKey:kNotiferMessageModelModifyOn];
  134. [aCoder encodeObject:_clientId forKey:kNotiferMessageModelClientId];
  135. [aCoder encodeObject:_sendTime forKey:kNotiferMessageModelSendTime];
  136. [aCoder encodeObject:_receiver forKey:kNotiferMessageModelReceiver];
  137. [aCoder encodeObject:_errorMsg forKey:kNotiferMessageModelErrorMsg];
  138. [aCoder encodeObject:_createOn forKey:kNotiferMessageModelCreateOn];
  139. [aCoder encodeObject:_memo forKey:kNotiferMessageModelMemo];
  140. [aCoder encodeObject:_content forKey:kNotiferMessageModelContent];
  141. [aCoder encodeObject:_type forKey:kNotiferMessageModelType];
  142. [aCoder encodeObject:_title forKey:kNotiferMessageModelTitle];
  143. [aCoder encodeObject:_userId forKey:kNotiferMessageModelUserId];
  144. [aCoder encodeObject:_group forKey:kNotiferMessageModelGroup];
  145. [aCoder encodeDouble:_readStatus forKey:kNotiferMessageModelReadStatus];
  146. [aCoder encodeObject:_status forKey:kNotiferMessageModelStatus];
  147. [aCoder encodeObject:_subType forKey:kNotiferMessageModelSubType];
  148. }
  149. - (id)copyWithZone:(NSZone *)zone
  150. {
  151. NotiferMessageModel *copy = [[NotiferMessageModel alloc] init];
  152. if (copy) {
  153. copy.internalBaseClassIdentifier = [self.internalBaseClassIdentifier copyWithZone:zone];
  154. copy.modifyOn = [self.modifyOn copyWithZone:zone];
  155. copy.clientId = [self.clientId copyWithZone:zone];
  156. copy.sendTime = [self.sendTime copyWithZone:zone];
  157. copy.receiver = [self.receiver copyWithZone:zone];
  158. copy.errorMsg = [self.errorMsg copyWithZone:zone];
  159. copy.createOn = [self.createOn copyWithZone:zone];
  160. copy.memo = [self.memo copyWithZone:zone];
  161. copy.content = [self.content copyWithZone:zone];
  162. copy.type = [self.type copyWithZone:zone];
  163. copy.title = [self.title copyWithZone:zone];
  164. copy.userId = [self.userId copyWithZone:zone];
  165. copy.group = [self.group copyWithZone:zone];
  166. copy.readStatus = self.readStatus;
  167. copy.status = [self.status copyWithZone:zone];
  168. copy.subType = [self.subType copyWithZone:zone];
  169. }
  170. return copy;
  171. }
  172. @end