diff --git a/Classes/BITAppVersionMetaInfo.m b/Classes/BITAppVersionMetaInfo.m index 0d3a313722..f7e9fa57ee 100644 --- a/Classes/BITAppVersionMetaInfo.m +++ b/Classes/BITAppVersionMetaInfo.m @@ -57,7 +57,6 @@ #pragma mark - NSObject - - (BOOL)isEqual:(id)other { if (other == self) return YES; @@ -66,24 +65,56 @@ return [self isEqualToAppVersionMetaInfo:other]; } +- (BOOL)isEqualComparingString:(NSString *)stringA withString:(NSString *)stringB { + if ([stringA isKindOfClass:[NSString class]] && [stringB isKindOfClass:[NSString class]]) { + return [stringA isEqualToString:stringB]; + } + + return NO; +} + +- (BOOL)isEqualComparingNumber:(NSNumber *)numberA withNumber:(NSNumber *)numberB { + if ([numberA isKindOfClass:[NSNumber class]] && [numberB isKindOfClass:[NSNumber class]]) { + return [numberA isEqualToNumber:numberB]; + } + + return NO; +} + +- (BOOL)isEqualComparingDate:(NSDate *)dateA withDate:(NSDate *)dateB { + if ([dateA isKindOfClass:[NSDate class]] && [dateB isKindOfClass:[NSDate class]]) { + return [dateA isEqualToDate:dateB]; + } + + return NO; +} + +- (BOOL)isEqualComparingDictionary:(NSDictionary *)dictA withDate:(NSDictionary *)dictB { + if ([dictA isKindOfClass:[NSDictionary class]] && [dictB isKindOfClass:[NSDictionary class]]) { + return [dictA isEqualToDictionary:dictB]; + } + + return NO; +} + - (BOOL)isEqualToAppVersionMetaInfo:(BITAppVersionMetaInfo *)anAppVersionMetaInfo { if (self == anAppVersionMetaInfo) return YES; - if (self.name != anAppVersionMetaInfo.name && ![self.name isEqualToString:anAppVersionMetaInfo.name]) + if (self.name != anAppVersionMetaInfo.name && ![self isEqualComparingString:self.name withString:anAppVersionMetaInfo.name]) return NO; - if (self.version != anAppVersionMetaInfo.version && ![self.version isEqualToString:anAppVersionMetaInfo.version]) + if (self.version != anAppVersionMetaInfo.version && ![self isEqualComparingString:self.version withString:anAppVersionMetaInfo.version]) return NO; - if (self.shortVersion != anAppVersionMetaInfo.shortVersion && ![self.shortVersion isEqualToString:anAppVersionMetaInfo.shortVersion]) + if (self.shortVersion != anAppVersionMetaInfo.shortVersion && ![self isEqualComparingString:self.shortVersion withString:anAppVersionMetaInfo.shortVersion]) return NO; - if (self.notes != anAppVersionMetaInfo.notes && ![self.notes isEqualToString:anAppVersionMetaInfo.notes]) + if (self.notes != anAppVersionMetaInfo.notes && ![self isEqualComparingString:self.notes withString:anAppVersionMetaInfo.notes]) return NO; - if (self.date != anAppVersionMetaInfo.date && ![self.date isEqualToDate:anAppVersionMetaInfo.date]) + if (self.date != anAppVersionMetaInfo.date && ![self isEqualComparingDate:self.date withDate:anAppVersionMetaInfo.date]) return NO; - if (self.size != anAppVersionMetaInfo.size && ![self.size isEqualToNumber:anAppVersionMetaInfo.size]) + if (self.size != anAppVersionMetaInfo.size && ![self isEqualComparingNumber:self.size withNumber:anAppVersionMetaInfo.size]) return NO; - if (self.mandatory != anAppVersionMetaInfo.mandatory && ![self.mandatory isEqualToNumber:anAppVersionMetaInfo.mandatory]) + if (self.mandatory != anAppVersionMetaInfo.mandatory && ![self isEqualComparingNumber:self.mandatory withNumber:anAppVersionMetaInfo.mandatory]) return NO; - if (![self.uuids isEqualToDictionary:anAppVersionMetaInfo.uuids]) + if (![self isEqualComparingDictionary:self.uuids withDate:anAppVersionMetaInfo.uuids]) return NO; return YES; }