繁体   English   中英

如何在prepareForSeque中将数据存储到NSUserDefaults

[英]How to Store data to NSUserDefaults in prepareForSeque

我正在尝试执行以下操作:在设置场景更改设置中,并且当我按下“后退”箭头时,应该存储更改的数据。 我认为应该在prepareForSeque方法中完成,如下所示:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    NSString* session_port = self.session_port.text;
    NSString* session_address = self.session_address.text;
    NSString* keep_alive_interval = self.session_keep_alive_interval.text;
    [[NSUserDefaults standardUserDefaults] setObject:session_port forKey:@"sessionPort"];
    [[NSUserDefaults standardUserDefaults] setObject:session_address forKey:@"sesssionAddress"];
    [[NSUserDefaults standardUserDefaults] setObject:keep_alive_interval forKey:@"keepAliveInterval"];
}

但是,它似乎不起作用,因为当我再次进入设置窗口时,数据仍然是标准数据。

有人可以向我提示正确的方向吗?

我将数据加载到设置视图中,如下所示:

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

    self.session_address.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"sesssionAddress"];
    self.session_port.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"sessionPort"];
    self.session_keep_alive_interval.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"keepAliveInterval"];

}

代替在prepareForSeque的上述过程中,可以在viewWillDisappear完成,如下所示:

-(void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    NSString* session_port = self.session_port.text;
    NSString* session_address = self.session_address.text;
    NSString* keep_alive_interval = self.session_keep_alive_interval.text;
    [[NSUserDefaults standardUserDefaults] setObject:session_port forKey:@"sessionPort"];
    [[NSUserDefaults standardUserDefaults] setObject:session_address forKey:@"sesssionAddress"];
    [[NSUserDefaults standardUserDefaults] setObject:keep_alive_interval forKey:@"keepAliveInterval"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

但是,这不是最佳解决方案,因为每次更改设置时都可以访问NSUserDefaults。 应该使用另一种方式在整个应用程序中传播更改,然后在应用程序关闭时存储数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM