Пользователь XCode по умолчанию нераспознанная ошибка селектора
Я начинаю использовать пользовательские настройки по умолчанию для какао и получаю [NSConcreteData alphaComponent]: нераспознанный селектор, отправленный экземпляру 0x100123660
ошибка. Вот исходный код:
Файл AppDelegate.m:
- (void)awakeFromNib{
NSColor *myColor = [NSColor greenColor];
[PreferencesController setDefaultColor:myColor];
NSColor *color = (NSColor *)[PreferencesController defaultColor];
NSLog(@"Default color : %@ - %@",(NSColor *)color, [NSColor greenColor]);
[tableView setBackgroundColor:color];
[colorWell setColor:color];
}
Файл PreferencesController.m:
+ (NSColor *)defaultColor{
NSColor * aColor;
NSData *theData=[[NSUserDefaults standardUserDefaults] valueForKey:TableViewBackgroundColorKey];
if (theData != nil)
aColor = (NSColor *)[NSUnarchiver unarchiveObjectWithData:theData];
return aColor;
}
+ (void)setDefaultColor:(NSColor *)color{
NSData *theData=[NSArchiver archivedDataWithRootObject:[NSArchiver archivedDataWithRootObject:color]];
[[NSUserDefaults standardUserDefaults] setObject:theData forKey:TableViewBackgroundColorKey];
}
Возвращаемое значение NSLog:
<040b7374 7265616d 74797065 6481e803 84014084 8484074e 53436f6c 6f720084 84084e53
4f626a65 63740085 84016301 84046666 66660001 000186> - NSCalibratedRGBColorSpace 0 1 0 1
Таким образом, значение, возвращаемое + (NSColor *)defaultColor
не NSColor, и, конечно, нет [NSColor greeenColor]
,
Я тоже получаю ошибку -[NSConcreteData alphaComponent]: unrecognized selector sent to instance 0x100184050
что, я думаю, должно быть вызвано не возвращением NSColor
для упомянутого метода.
Пожалуйста, помогите мне отладить.
Благодарю.
1 ответ
Вам придется обрабатывать NSColor особым образом, сохраняя его по умолчанию. NSColor не является объектом, который может быть представлен в списке свойств; см. Хранение NSColor в пользовательских настройках по умолчанию для примеров кода.