UILabel文本未存储在NSUserDefault中

时间:2015-02-25 17:10:42

标签: ios objective-c uilabel nsuserdefaults

我有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的应用时。 有谁知道我的问题是什么。非常感谢: - )

2 个答案:

答案 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];
}

您真正想要实现的是什么,因为我并不真正了解您在加载应用后立即存储价值的重点。详细说明您的目标是什么。