1

我正在使用 NSUserDefaults 类来存储一些数据,但我在初始化方面存在正常冲突。

我是说:

在 didViewLoad 方法的 Class A 中,我设置了我的 NSUserDefaults 数据,然后在我的 Class B 中的 didViewLoad 中,我想获取我的 NSUserDefaults 数据。

我已经看到断点,在首次运行应用程序期间,应用程序的所有 didViewLoad() 都已执行,因此我想在我的 B 类的 viewDidLoad() 中为首次运行应用程序设置一个条件以避免随机数据初始化。

我们是否在 Objective-C 的框架中使用了关键字而不是使用静态变量?

例如:

ClassA--> didViewLoad():

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:kdataText forKey:@"udVariable"];

ClassB-> didViewLoad():

和:

ClassB--> didViewLoad():

if (!first_run){ // first_run --> KEYWORD FRAMEWORK???
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *var = [defaults objectForKey:@"udVariable"];
}
4

3 回答 3

4

关键是registerDefaults更早地调用,例如在main应用程序委托的applicationDidFinishLaunching:. 从我的一个应用程序:

[[NSUserDefaults standardUserDefaults] registerDefaults:
    @{@"cardMatrixRows":@4, @"cardMatrixColumns":@3}];

现在有一个默认的默认值,事件/视图控制器的顺序不再重要。

于 2013-04-13T18:00:07.750 回答
1

斯威夫特 4:

将此代码添加到 didFinishLaunchingWithOptions 中的 AppDelegate:

UserDefaults.standard.register(defaults: ["cardMatrixRows": NSNumber(value: 4), "cardMatrixColumns": NSNumber(value: 3)])

于 2019-03-20T23:46:53.200 回答
0

只需检查是否 [defaults objectForKey:@"udVariable"] != nil

您也可以使用宏#define。

于 2013-04-13T18:00:03.370 回答