// // MOUserSetBaseData.m // // Created by SuperCabbage on 2024/9/23 // Copyright (c) 2024 __MyCompanyName__. All rights reserved. // #import "MOUserSetBaseData.h" #import "MOUserSetData.h" NSString *const kMOUserSetBaseDataCanSend = @"canSend"; NSString *const kMOUserSetBaseDataUserSetData = @"block"; @interface MOUserSetBaseData () - (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict; @end @implementation MOUserSetBaseData @synthesize canSend = _canSend; @synthesize userSetData = _userSetData; + (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.canSend = [[self objectOrNilForKey:kMOUserSetBaseDataCanSend fromDictionary:dict] boolValue]; self.userSetData = [MOUserSetData modelObjectWithDictionary:[dict objectForKey:kMOUserSetBaseDataUserSetData]]; } return self; } - (NSDictionary *)dictionaryRepresentation { NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary]; [mutableDict setValue:[NSNumber numberWithBool:self.canSend] forKey:kMOUserSetBaseDataCanSend]; [mutableDict setValue:[self.userSetData dictionaryRepresentation] forKey:kMOUserSetBaseDataUserSetData]; 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]; return [object isEqual:[NSNull null]] ? nil : object; } #pragma mark - NSCoding Methods - (id)initWithCoder:(NSCoder *)aDecoder { self = [super init]; self.canSend = [aDecoder decodeBoolForKey:kMOUserSetBaseDataCanSend]; self.userSetData = [aDecoder decodeObjectForKey:kMOUserSetBaseDataUserSetData]; return self; } - (void)encodeWithCoder:(NSCoder *)aCoder { [aCoder encodeBool:_canSend forKey:kMOUserSetBaseDataCanSend]; [aCoder encodeObject:_userSetData forKey:kMOUserSetBaseDataUserSetData]; } - (id)copyWithZone:(NSZone *)zone { MOUserSetBaseData *copy = [[MOUserSetBaseData alloc] init]; if (copy) { copy.canSend = self.canSend; copy.userSetData = [self.userSetData copyWithZone:zone]; } return copy; } @end