0

Cocoa でユーザー デフォルトを使い始めたところ、[NSConcreteData alphaComponent]: unrecognized selector sent to instance0x100123660エラーが発生しました。ソースコードは次のとおりです。

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 *)defaultColorNSColor ではありません [NSColor greeenColor]

エラーも発生していますが、これは、言及されたメソッドに対して を-[NSConcreteData alphaComponent]: unrecognized selector sent to instance 0x100184050返さないことが原因であると思われます。NSColor

デバッグを手伝ってください。

ありがとう。

4

1 に答える 1

0

NSColorをユーザーのデフォルトに保存する場合は、特別な方法で処理する必要があります。NSColorは、プロパティリストで表すことができるオブジェクトではありません。コード例については、NSColorをユーザーデフォルトに保存するを参照してください。

于 2013-01-04T17:55:45.700 に答える