首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSUserDefaults standardUserDefaults

NSUserDefaults standardUserDefaults
EN

Stack Overflow用户
提问于 2012-11-27 02:57:26
回答 2查看 809关注 0票数 0

我有这个问题。我有手术要做。但如果我想存钱呢?我想保存所有(文本字段数据选择器和结果标签)

我有2个文本字段和1个datapicker +标签中的结果。

这是我的M:

代码语言:javascript
复制
#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

这个代码是正确的吗?

谢谢你……

EN

回答 2

Stack Overflow用户

发布于 2012-11-27 03:14:36

有几件事。

  • 在你的-viewDidLoad中,你出于某种原因调用了-synchronize。所要做的就是对用户默认设置上的任何事件执行保存功能。在我看来,你没有,可以跳过这个对-synchronize.
  • One的调用,因为你的日志显示了'r‘的值。该值是一个整数值,您应该使用'%i‘来正确显示它。您正在执行一些计算来获得该值,因此您可能希望它是双精度值或其他值,但您当前正在将其强制转换为int。

我没有看到任何关于用户默认设置的东西看起来有点乱。因此,也许您可以指定错误或未正确完成的确切位置,以获得更好的帮助。

票数 1
EN

Stack Overflow用户

发布于 2012-11-27 03:13:19

是的,代码看起来是正确的。您的_data变量类型是什么?如果您在保存到NSUser时遇到问题。尝试保存self.data.date

一个技巧:在从NSUserdefautls获得值之后,不需要同步。将值设置为NSUserdefaults后使用synchronize。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13571294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档