0

私のアプリケーションには、いくつかの色設定、フォント設定、およびアプリケーション固有のオブジェクトを含む Dictionary があります (これらのオブジェクトは、 application にプライベートなプロパティを持つクラスです)。色の設定とフォントの設定は、アプリケーションの一種のパブリック設定です。それらを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 に答える