我正在使用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"];
}
答案 0 :(得分:4)
关键是要更早地致电registerDefaults
,例如main
或应用代表的applicationDidFinishLaunching:
。来自我的应用程序:
[[NSUserDefaults standardUserDefaults] registerDefaults:
@{@"cardMatrixRows":@4, @"cardMatrixColumns":@3}];
现在有一个默认的默认值,事件/视图控制器的顺序不再重要。
答案 1 :(得分:1)
将此代码添加到didFinishLaunchingWithOptions中的AppDelegate中:
UserDefaults.standard.register(defaults: ["cardMatrixRows": NSNumber(value: 4), "cardMatrixColumns": NSNumber(value: 3)])
答案 2 :(得分:0)
检查是否
[defaults objectForKey:@"udVariable"] != nil
您也可以使用宏#define。