我有UILabel
名为'labelA'。在这个标签上是字母'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
的应用时。
有谁知道我的问题是什么。非常感谢: - )
答案 0 :(得分:0)
您的方法默认值不会在任何地方调用,因此文本值永远不会存储在NSUserDefaults
中。
[self defaults]; // This needs to be called somewhere before you try and access NSUserDefaults.
您还应该使用点表示法访问自己,而不是->
self.labelA.text = [defaults objectForKey:@"labelAText"];
->
用于取消引用C中的结构,以获取更多信息 - What is "->" in Objective C?
答案 1 :(得分:0)
使用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];
}
您真正想要实现的是什么,因为我并不真正了解您在加载应用后立即存储价值的重点。详细说明您的目标是什么。