如何使用从URL中提取的NSUserDefaults存储数据并将它们设置为textFields

问题描述:

在下面的代码中,我从URL获取数据并将其直接存储到TextFields中。但是,当我的应用长时间处于后台并且我从暂停状态重新打开时,数据会丢失。如何使用从URL中提取的NSUserDefaults存储数据并将它们设置为textFields

有没有人有关于如何获取和存储数据在NSUserDefaults的想法,所以我不会失去它,然后在文本字段中显示它?

- (void)viewDidLoad { 

    [super viewDidLoad]; 

    NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://190.179.4.9:92/mybite_joomla/cron/webapi.php?task=webapi.viewProfile"]]; 

    [request setHTTPMethod:@"GET"]; 

    [request setValue:@"application/json;charset=UTF-8" forHTTPHeaderField:@"content-type"]; 

    NSError *err; 
    NSURLResponse *response; 
    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err]; 

    NSDictionary *jsonArray = [NSJSONSerialization JSONObjectWithData:responseData options: NSJSONReadingMutableContainers error: &err]; 

    for (NSDictionary *dict in jsonArray) { 

     // here I am directly setting it into textfields and I need to store it first 
     nameTextView.text =[jsonArray valueForKey:@"name"]; 

     usernameTextView.text =[jsonArray valueForKey : @"username"]; 

     emailTextView.text=[jsonArray valueForKey : @"email"]; 

     cityTextView.text =[jsonArray valueForKey : @"city"]; 

     stateTextView.text =[jsonArray valueForKey : @"state"]; 

     countryTextView.text =[jsonArray valueForKey : @"country"]; 
    } 
} 
+0

没有帮助的解决方案尚未...寻找它......如果有人能帮助.. .plz答案... – vicky

+0

停止使用'valueForKey:',除非你真的需要KVC。 – vadian

+0

那么应该在那里@ vadian – vicky

for (NSDictionary *dict in jsonArray) { 

[[NSUserDefaults standardUserDefaults]setObject:[jsonArray valueForKey:@"name"] forKey:@"nameString"]; 

[[NSUserDefaults standardUserDefaults]setObject:[jsonArray valueForKey:@"username"] forKey:@"usernameString"]; 

[[NSUserDefaults standardUserDefaults]setObject:[jsonArray valueForKey:@"email"] forKey:@"emailString"]; 

[[NSUserDefaults standardUserDefaults]setObject:[jsonArray valueForKey:@"city"] forKey:@"cityString"]; 

[[NSUserDefaults standardUserDefaults]setObject:[jsonArray valueForKey:@"state"] forKey:@"stateString"]; 

[[NSUserDefaults standardUserDefaults]setObject:[jsonArray valueForKey:@"country"] forKey:@"countryString"]; 

    } 

然后,在viewWillAppear中:

nameTextView.text = [[NSUserDefaults standardUserDefaults] stringForKey:@"nameString"]; 

    usernameTextView.text = [[NSUserDefaults standardUserDefaults] stringForKey:@"usernameString"]; 

    emailTextView.text = [[NSUserDefaults standardUserDefaults] stringForKey:@"emailString"]; 

    cityTextView.text = [[NSUserDefaults standardUserDefaults] stringForKey:@"cityString"]; 

    stateTextView.text = [[NSUserDefaults standardUserDefaults] stringForKey:@"stateString"]; 

    countryTextView.text = [[NSUserDefaults standardUserDefaults] stringForKey:@"countryString"]; 
+0

这就像一个完美的解决方案哥们,谢谢一个吨的人,真的是一个iOS的怪胎你是@iOS奇才 – vicky

+0

雅伙计它帮助我...投了赞成票:)但昨天我问了一个问题退出有关我认为这是解决方案。在注销按钮操作中设置userID nil不会产生问题。这将是很好,如果你看看这个代码@iOS极客 – vicky

+0

http://stackoverflow.com/questions/37658504/how-to-logout-without-setting-userid-nil-我已经投了你答案我应该有15声望所以其他人将能够看到我投了你的答案......其实没有人投我的棘手问题@iOS极客 – vicky

商店:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setValue:nameTextView.text forKey:@"name"]; 
[defaults synchronize]; 

得到:

NSString *value = [[NSUserDefaults standardUserDefaults] stringForKey:@"name"]; 
+0

我想要获取nameTextView.text中的数据@anhtu – vicky

+0

@vicky您可以通过setValue存储任何内容。我更新了我的答案。 – anhtu

+0

不,这是说未使用的变量名@anhtu – vicky

首先NSUserDefaults的得到的实例:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

然后你就可以存储数据:

NSString *name =[jsonArray valueForKey:@"name"]; 

[defaults setObject:name forKey:@"name"]; 
[defaults synchronize]; 

并获取数据:

NSString *storedName = [defaults stringForKey:@"name"]; 

nameTextView.text = storedName; 
+0

thnx但不工作的家伙 – vicky

+0

你应该删除第一行取数据块它说重新定义名称@usagi_visk – vicky

+0

我假设你会存储和获取数据在不同的地方。如果没有,该行必须被删除,你是对的 – josemigallas