iOS:首次运行应用程序期间的NSUserDefaults?

时间:2013-04-13 17:56:03

标签: ios objective-c

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

我的意思是:

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

我已经看到断点在第一次运行应用程序期间,应用程序的所有didViewLoad()都被执行了,所以我想在我的B类的viewDidLoad()中放入第一个条件 - run-application以避免随机数据初始化。

我们在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"];
}

3 个答案:

答案 0 :(得分:4)

关键是要更早地致电registerDefaults,例如main或应用代表的applicationDidFinishLaunching:。来自我的应用程序:

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

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

答案 1 :(得分:1)

雨燕4:

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

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

答案 2 :(得分:0)

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

您也可以使用宏#define。