卡在NSUserDefaults上

时间:2012-03-26 12:33:52

标签: iphone objective-c ios xcode nsuserdefaults

这里有一个菜鸟。我无法通过阅读这些电路板来解决我的问题 - 任何人都可以发现这个问题:

我有一个标签,我想每天更新,我尝试使用NSUserDefaults。

    -(id)init{
    ...
    ...
    NSDate *date = [NSDate date];
    NSString *todaysDate = [NSString stringWithFormat:@"%@", date];

    [self createLabel:todaysDate];
    }

    -(void)createLabel:(NSString*)theDate{

     if([[NSUserDefaults standardUserDefaults] objectForKey:theDate] == nil){

     myLabel.text = [someOtherClass getAppropriateString];

    [[NSUserDefaults standardUserDefaults] setObject:[mylabel text] forKey:theDate];

}else{

    myLabel.text = [[NSUserDefaults standardUserDefaults] stringForKey:theDate]

  }

 }

编辑:

感谢您的帮助。在写这个问题时,我实际上意识到了我的错误!

刚做了快速测试。

如果有人感兴趣:今天的日期字符串包括分钟和秒,这意味着每次我运行应用程序并将其保存为NSUserDefault时,都会有所不同。

我添加了日期格式化程序,现在可以使用了。

3 个答案:

答案 0 :(得分:1)

您可能忘记了synchronize您的更改。在[[NSUserDefaults] synchronize];

之后添加setObject:forKey:

答案 1 :(得分:0)

试试这个

-(void)createLabel:(NSString*)theDate
{
     if([[NSUserDefaults standardUserDefaults] objectForKey:theDate] == nil){
         myLabel.text = [someOtherClass getAppropriateString];

         [[NSUserDefaults standardUserDefaults] setObject:[mylabel text] 
                                                   forKey:theDate];
         [[NSUserDefaults standardUserDefaults] synchronize];
     }else{
         myLabel.text = [[NSUserDefaults standardUserDefaults] objectForKey:theDate];
     }
}

答案 2 :(得分:0)

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateStyle:NSDateFormatterStyleLong];
NSString *todaysDate = [dateFormatter stringFromDate:date];