0

在我的应用程序中,我有一些颜色设置、字体设置和一个包含应用程序特定对象的字典(这些对象是具有属性的类,它们是应用程序私有的)。颜色设置和字体设置是应用程序的公共设置。我想将它们保存到NSUserDefaults但它会正确显示任何字体或颜色,所以我使用这行代码保存它们

// reading the value
NSData *foregroundcolorData = [[NSUserDefaults standardUserDefaults] objectForKey:@"foregroundcolor"];
UIColor *foregndcolor = [NSKeyedUnarchiver unarchiveObjectWithData:foregroundcolorData];

// setting the default values
NSData *foregndcolorData = [NSKeyedArchiver archivedDataWithRootObject:[UIColor blackColor]];
    [[NSUserDefaults standardUserDefaults] setObject:foregndcolorData forKey:@"foregroundcolor"];

// saving the changes, by putting everything in a dictionary called "preferences"
[[NSUserDefaults standardUserDefaults] registerDefaults:preferences];
[[NSUserDefaults standardUserDefaults] synchronize];

我决定将所有设置都放在应用程序 UI 中。为了使上面的代码能够工作,我需要向应用程序项目中添加一个“设置包”文件。这会导致应用程序在设备/系统设置面板中放置一个条目。它是空的,因为我没有在设置包文件中设置任何应用程序配置详细信息。

我怎样才能解决这个问题?

4

1 回答 1

1

自定义持有人对象

@interface HolderObject : NSObject

@property (strong, nonatomic) UIColor *xColor;
@property (strong, nonatomic) UIFont *xFont;

@end

@implementation PTextHolder

@synthesize xColor, xFont;

- (void)encodeWithCoder:(NSCoder *)encoder 
{
    [encoder encodeObject:xColor forKey:@"xColor"];
    [encoder encodeObject:xFont forKey:@"xFont"];
}

- (id)initWithCoder:(NSCoder *)decoder 
{
    if (self = [super init]) 
    {
        self.xColor = [decoder decodeObjectForKey:@"xColor"];
        self.xFont = [decoder decodeObjectForKey:@"xFont"];
    }
    return self;
}
于 2012-07-23T17:40:48.450 回答