Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSUserDefaults standardUserDefaults_Objective C_Ios_Nsuserdefaults - Fatal编程技术网

Objective c NSUserDefaults standardUserDefaults

Objective c NSUserDefaults standardUserDefaults,objective-c,ios,nsuserdefaults,Objective C,Ios,Nsuserdefaults,我有这个问题。我要动手术。但如果我想存钱? 我想保存所有(文本字段数据选择器和结果标签) 我有2个文本字段和1个数据选择器+标签中的结果 这是我的M: #import "ViewController.h" #import "ResultViewController.h" @interface ViewController () @end @implementation ViewController @synthesize myLabel; -(IBAction)calculate:

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

我有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
这个代码是对的

谢谢……

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

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

将事情耦合起来

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

我没有看到任何关于用户默认设置的问题。因此,也许您可以指定哪些是错误的,哪些是未正确执行的,以获得更好的帮助。

乍一看,代码看起来是正确的。你的具体问题是什么?但是现在我的保存不起作用了!我有三个滚轴。我在第三视图控制器中进行了此操作。但如果我第一次去的话,我的约会对象就不见了。如果我只进入第二视图控制器,我的日期正在保存。但现在我的保存不起作用了!我有三个滚轴。我在第三视图控制器中进行了此操作。但如果我第一次去的话,我的约会对象就不见了。如果我只在第二视图控制器中查看,我的日期正在保存。日期选择器中的日期不保存…我不知道问题出在哪里。