【问题标题】:NSUserDefaults standardUserDefaultsNSUserDefaults 标准用户默认值
【发布时间】:2012-11-26 18:57:26
【问题描述】:

我有这个问题。我有一个手术。但是如果我想保存呢? 我想保存所有(文本字段数据选择器并生成标签)

我有 2 个文本字段和 1 个数据选择器 + 标签中的结果。

这是我的 M:

#import "ViewController.h"
#import "ResultViewController.h"



@interface ViewController ()

@end

@implementation ViewController

@synthesize myLabel;

-(IBAction)calculate:(id)sender{



    NSDate *past = _data.date ;
    NSDate *now = [NSDate date];

    NSCalendar *gregorianCalendar = [[NSCalendar alloc]
                                     initWithCalendarIdentifier:NSGregorianCalendar];
    NSUInteger unitFlags = NSDayCalendarUnit;
    NSDateComponents *components = [gregorianCalendar components:unitFlags
                                                        fromDate:past
                                                          toDate:now
                                                        options:0];
    int z = [components day];
    int a = ([_textField1.text intValue]);
    int b = a*([_textField2.text intValue]);

    int r = b * z / 20;

    myLabel.text = [[NSString alloc] initWithFormat:@"%d", r];



}

- (void)viewDidLoad
{
    [super viewDidLoad];



    NSDate *past = _data.date ;
    NSDate *now = [NSDate date];

    NSCalendar *gregorianCalendar = [[NSCalendar alloc]
                                     initWithCalendarIdentifier:NSGregorianCalendar];
    NSUInteger unitFlags = NSDayCalendarUnit;
    NSDateComponents *components = [gregorianCalendar components:unitFlags
                                                        fromDate:past
                                                          toDate:now
                                                         options:0];
    int z = [components day];
    int a = ([_textField1.text intValue]);
    int b = a*([_textField2.text intValue]);

    int r = b * z / 20;

    myLabel.text = [[NSString alloc] initWithFormat:@"%d", r];

    self.textField1.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"key1"];
    self.textField2.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"key2"];
    self.myLabel.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"key3"];
    self.data = [[NSUserDefaults standardUserDefaults] objectForKey:@"key4"];


[[NSUserDefaults standardUserDefaults]synchronize];


    // Do any additional setup after loading the view, typically from a nib.
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {


    if ([segue.identifier isEqualToString:@"detail"]) {

        ResultViewController* destVC = (ResultViewController*)segue.destinationViewController;

        destVC.myString = self.myLabel.text;

    }
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:YES];



    [[NSUserDefaults standardUserDefaults] setObject:self.textField1.text forKey:@"key1"];
    [[NSUserDefaults standardUserDefaults] setObject:self.textField2.text forKey:@"key2"];
    [[NSUserDefaults standardUserDefaults] setObject:self.myLabel.text forKey:@"key3"];
    [[NSUserDefaults standardUserDefaults] setObject:self.data forKey:@"key4"];

    [[NSUserDefaults standardUserDefaults]synchronize];

}
@end

这段代码对吗?

谢谢……

【问题讨论】:

  • 乍一看,代码看起来是正确的。您的具体问题是什么?
  • 但是现在我的存档不起作用了!我有 3 个视图控制器。我在第三个视图控制器中有这个操作。但如果我先去,我的约会就输了。如果我只进入第二个视图控制器,我的日期正在保存。

标签: objective-c ios nsuserdefaults


【解决方案1】:

几件事。

  • 在您的-viewDidLoad 中,出于某种原因您调用-synchronize。所有这一切都是为您的用户默认设置的任何事件执行保存功能。据我所知,您没有任何,可以跳过这个调用 -synchronize。
  • 您的一个日志显示了“r”的值。该值是一个 int 值,您应该使用 '%i' 来正确显示它。您正在执行一些计算来获得该值,因此您可能希望它是一个双精度值或其他值,但您目前正在将其转换为一个 int。

我没有看到任何关于用户默认设置的内容看起来不合时宜。因此,也许您可​​以指定究竟是什么错误或没有正确完成以获得更好的帮助。

【讨论】:

    【解决方案2】:

    是的,代码看起来不错。 你的 _data 变量类型是什么? 如果您无法保存到 NSUser。尝试保存 self.data.date

    一个提示:您不需要在从 NSUserdefautls 获取值后进行同步。将值设置为 NSUserdefaults 后使用同步。

    【讨论】:

    • 但是现在我的存档不起作用了!我有 3 个视图控制器。我在第三个视图控制器中有这个操作。但如果我先去,我的约会就输了。如果我只进入第二个视图控制器,我的日期正在保存。
    • 我在日期选择器中的日期没有保存...我不明白是什么问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多