我从一个url中获取json数据并将其中一个值传给NSUserdefaults以将其用于应用程序视图。NSUserdefaults不会更新,直到应用程序重新启动
示例用户将输入一个给予他的唯一代码,该代码将被附加到请求的URL,根据请求的代码json值将被更改。 目前,当我输入代码时,它正在提取并保存NSuserdefaults
并将它传递给视图中的标签。但是,当我输入新的代码和新的数据时,它不会在视图中更新。如果我重新启动应用程序并输入新代码,那么它将显示新的值。有人可以帮助我吗?这里是代码
NSString *jsonUrlString = [[NSString alloc] initWithFormat:@"http://mywebsite.com/json/code.php?user=%@",_opcodeField.text];
NSURL *url = [NSURL URLWithString:[jsonUrlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url];
[_indicator startAnimating];
_indicator.hidesWhenStopped = YES;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
//-- JSON Parsing
NSMutableArray *result = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers error:nil];
NSLog(@"settings = %@",result);
for (NSDictionary *dic in result)
{
[[NSUserDefaults standardUserDefaults] setObject:[dic objectForKey:@"footer"] forKey:@"op_footer"];
[[NSUserDefaults standardUserDefaults] synchronize];
[_indicator performSelectorOnMainThread:@selector(stopAnimating) withObject:nil waitUntilDone:YES];
}
查看代码:
(void)viewDidLoad {
[super viewDidLoad];
_Footer.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"op_footer"];
我如何可以显示而不需要重新启动应用程序的新值。有没有可以添加的代码?我可以看到json在用户输入新代码时正在提取正确的新值
谢谢。
您确定在“保存代码”之后调用了“查看代码”吗? – Krivoblotsky
与你的问题无关,但在'for'循环后面调用'-synchronize'可能更聪明一点? (而不是每次迭代)。 –