[英]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.