你應該只使用NSUserDefaults。如果您認爲有很多NSUserDefaults,建議您創建1個模型類並使用它。創建一個模型類並將您的設置作爲屬性並創建該類的對象並將其保存到NSUserDefaults對您來說很容易,因爲它只是一次性實現。
@interface SettingsModelClass : NSObject
{
NSString *strSetting1;
BOOL boolSetting2;
}
@property (nonatomic,retain) NSString *strSetting1;
@property (nonatomic,assign) BOOL boolSetting2;
// Implementaiton
@implementation SettingsModelClass
@synthesize strSetting1, boolSetting2;
-(void)dealloc
{
[strSetting1 release];
[super dealloc];
}
- (void)encodeWithCoder:(NSCoder *)encoder
{
//Encode properties, other class variables, etc
[encoder encodeObject:self.strSetting1 forKey:@"StringSetting"];
[encoder encodeBool:self.boolSetting2 forKey:@"BoolSetting"];
}
- (id)initWithCoder:(NSCoder *)decoder
{
self = [super init];
if(self != nil)
{
//decode properties, other class vars
self.strSetting1 = [decoder decodeObjectForKey:@"StringSetting"];
self.boolSetting2 = [decoder decodeBoolForKey:@"BoolSetting"];
}
return self;
}
@end
請留下,如果您有任何疑問,意見。我很樂意幫助你。
更新 是的,你可以通過應用程序委託來訪問。或者甚至可以將它創建爲單例類實例。 這種方法使用OOPS基金會,所以它是連擊我遵循這種模式,我相信。
'NSDefaults'太多了嗎?如果你有一千把鑰匙,那麼很可能是的。但是,你做錯了你的設置。 – Costique 2012-03-22 04:22:34
如果你不想使用大量設置的NSUserDefaults,爲什麼不創建一個包含所有設置的對象,使它符合NSCoding協議,將它保存在應用程序終止/ resigns激活並將其加載到應用程序didFinishLaunching上? – bennythemink 2012-03-22 04:51:25
如果你存儲了大量的數據,忘記關於所有「使用'[ud synchronize]'!! 1111one」 - 你在stackoverflow上看到的數據。無論如何他們通常都是錯的。不要在每個'setObject:forKey:'之後調用同步,並且你不會有任何問題。 – 2012-03-22 05:53:18