-1

我正在编写我的第一个 Cocoa 应用程序。

现在,每次我需要 时NSUserDefaults,我都会初始化该类的一个对象并在本地范围内使用它。

这有点乏味。所以我想知道我应该把NSUserDefaults声明和初始化放在哪里,以便它可以用于我的所有Application Delegate方法?

4

4 回答 4

3

尝试使用用户默认值时,您应该简单地使用此单例

[NSUserDefaults standardUserDefaults];
于 2012-12-24T12:32:33.367 回答
1

在需要的地方调用默认值并没有错。无论如何,它是一个单身人士。

如果您将其放入您的应用程序委托中,您将只是以相同的方式调用以获取 NSUserDefaults。

如果您想为您的应用程序初始化默认值 - 可以在+initialize您的应用程序委托的方法中执行此操作。

于 2012-12-24T12:31:19.863 回答
0

I'm initialising an object of the class and use it in the local scope.

根本不需要。如果你想在 UserDefaults 中保存一些东西,可可为你提供了一个共享实例/单例。

每当您需要更新保存的值时,您调用[NSUserDefaults standardUserDefaults]并使用它,只会为您保存一个实例。

[[NSUserDefaults standardUserDefaults] setObject:yourObject forKey:@"yourKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
于 2012-12-24T12:38:08.830 回答
0

进行用户默认值的一个好方法是创建自己的PFXDefaults类(替换PFX为您喜欢的前缀),该类具有访问和改变您关心的值的方法。这允许你写

[[PFXDefaults sharedDefaults] setUserName:@"Nate"];

而不是

[[NSUserDefaults] setObject:@"Nate" forKey:@"userName"];

将此类设置为前缀通常很方便,或者,除非.h在您的应用程序委托上使用可见(在文件中声明)属性,否则会很方便。

界面PFXDefaults看起来像

@interface PFXDefaults : NSObject

@property (nonatomic) NSString *userName;

@end

并且实现看起来像

static NSString * const PFXDefaultUserNameKey = @"PFXDefaultUserNameKey";

@implementation PFXDefaults

- (void)setUserAge:(NSString *)userName
{
    [[NSUserDefaults standardUserDefaults] setObject:userName forKey:PFXDefaultUserNameKey];
}

- (NSInteger)userAge
{
    return [[NSUserDefaults standardUserDefaults] stringForKey:PFXDefaultUserNameKey];
}

@end
于 2012-12-24T12:47:47.007 回答