Я сохраняю UIColor
в NSUserDefaults
, и проблема, с которой я столкнулась, заключается в том, что при восстановлении цвета возвращается простая проверка равенства (для моих тестов). Может кто-нибудь объяснить, почему это не удается?UIColor равенство не удается после его хранения в NSUserDefaults
UIColor *color = [UIColor colorWithRed: 0.922 green: 0.404 blue: 0.024 alpha: 1];
NSData *colorData = [NSKeyedArchiver archivedDataWithRootObject:color];
[[NSUserDefaults standardUserDefaults] setObject:colorData forKey:@"myColor"];
NSData *storedColorData = [[NSUserDefaults standardUserDefaults] objectForKey:@"myColor"];
UIColor *restoredColor = [NSKeyedUnarchiver unarchiveObjectWithData:storedColorData];
if ([color isEqual:restoredColor]) {
NSLog(@"Same color");
} else {
NSLog(@"Not the same color");
}
В результате получится «Не такой же цвет». Быстрый поиск в отладчике покажет, что цвета идентичны (значения RGB и альфа).
isEqual: сравнение хэшей. вам нужно сравнить компоненты вашего цвета (красный, зеленый, синий, альфа), чтобы определить, равны ли они –