我有一个名为"labelA"的UILabel
。这个标签上有字母"A"。
当我使用NSUserDefault并启动我的应用程序时,标签是空的,但我不知道为什么?
这是我的ViewController.m文件:
- (void)viewDidLoad {
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
self->labelA.text = [defaults objectForKey:@"labelAtext"]; }
- (void)defaults {
NSString *textLabelA = labelA.text;
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:textLabelA forKey:@"labelAtext"];
[defaults synchronize];
}
这是我在ViewController.h文件中的NSString
NSString *textLabelA =@"A";
当我在没有NSUserDefault the labelA.text = A
的情况下加载应用程序时。有人知道我的问题是什么吗。非常感谢:-)
您的方法默认值不会在任何地方被调用,因此文本值永远不会存储在NSUserDefaults
中。
[self defaults]; // This needs to be called somewhere before you try and access NSUserDefaults.
您还应该访问自使用点表示法,而不是->
self.labelA.text = [defaults objectForKey:@"labelAText"];
->
用于取消引用C中的结构->quot;目标C中?
使用UserDefaults时。你应该首先测试你是否得到了一个值,就好像这个值不存在一样——你需要设置它还是不设置它。
NSString * myPreference = @"labelAtext";
- (void)viewDidLoad {
NSUserDefaults* userDefault = [NSUserDefaults standardUserDefaults];
id labelValue = [userDefault objectForKey:myPreference];
if (labelValue) // if preference exist
self.labelA.text = labelValue; // set ur label
else
[self storeDefaultValue]; // you store a default value
}
- (void)storeDefaultValue
{
NSString *myDefaultValue = nil;
if ([self.labelA.text isNotEqualToString:@""]) // if ur label not empty
myDefaultValue = self.labelA.text;
else
myDefaultValue = @"Not Available"; // or whatever defaults value you want
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:myDefaultValue forKey:myPreference];
[defaults synchronize];
}
你真正想实现什么,因为我真的不明白在你加载应用程序后立即将值存储在偏好中有什么意义。详细说明你的目标。