這裏的問題是,的UIColor不是「鑰匙編碼」標準(我不是肯定是正確的詞),你應該有這樣的錯誤:
*** -[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value
它不能保存到NSUSerDefault s,您需要使用NSKeyArchiver保存它們或將顏色值轉換爲符合密鑰代碼的內容。例如,我使用類別遵循了NSStringFromCGRect方法。這是我的代碼:
UIColorAdditions.h
#import <Foundation/Foundation.h>
@interface UIColor (UIColorAdditions)
+ (NSString *)stringFromUIColor:(UIColor *)color;
@end
@interface NSString (UIColorAdditions)
+ (UIColor *)colorFromNSString:(NSString *)string;
@end
UIColorAdditions.m
#import "UIColorAdditions.h"
@implementation UIColor (UIColorAdditions)
+ (NSString *)stringFromUIColor:(UIColor *)color {
return [NSString stringWithFormat:@"%@", color ];
}
@end
@implementation NSString (UIColorAdditions)
+ (UIColor*)colorFromNSString:(NSString *)string {
// The string should be something like "UIDeviceRGBColorSpace 0.5 0 0.25 1
NSArray *values = [string componentsSeparatedByString:@" "];
CGFloat red = [[values objectAtIndex:1] floatValue];
CGFloat green = [[values objectAtIndex:2] floatValue];
CGFloat blue = [[values objectAtIndex:3] floatValue];
CGFloat alpha = [[values objectAtIndex:4] floatValue];
UIColor *color = [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
return color;
}
@end
使用的例子:
NSString *strColor = [UIColor stringFromUIColor:[UIColor colorWithRed:0.5 green:0 blue:0.25 alpha:1.0]];
[[NSUserDefaults standardUserDefaults] setObject:strColor forKey:kViewBgColorKey];
有多種解決方案,(更好的) ,我剛剛發佈了我的。