2016-06-07 2 views
0

아래 코드에서 URL에서 데이터를 가져와 TextFields에 직접 저장하고 있습니다. 그러나 내 앱이 오랜 기간 동안 백그라운드로 이동하면 일시 중지 상태에서 다시 열 때 데이터가 손실됩니다.URL에서 가져온 NSUserDefaults를 사용하여 데이터를 저장하고 textFields로 설정하는 방법

데이터를 가져 와서 저장하는 방법에 대한 아이디어가있는 사람이 있습니까? 그렇다면이 항목을 잃어 버리지 않고 텍스트 입력란에 표시 할 수 있습니까?

- (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

정말 KVC가 필요하지 않는 한'valueForKey :'를 사용하여 중지하십시오. – vadian

+0

그래서 무엇이 있어야합니까 @ vadian – vicky

답변

0
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 괴짜 ur @ iOS 괴짜 – vicky

+0

나중에 야 도와 줬어 ... 투표 :) :)하지만 어제 내가 질문 Logout 관련이 생각 Logged 해결책이었습니다. 로그 아웃 버튼 동작에서 userID nil을 설정해도 문제가 발생하지 않습니다. 당신이 그 코드를 봐 주면 좋을 것이다 @ iOS Geek – vicky

+0

http://stackoverflow.com/questions/37658504/how-to-logout-without-setting-userid-nil - 나는 당신에게 내가 투표해야하는 대답을 투표했다. 15 평판 그래서 다른 사람은 내가 당신의 대답에 투표 한 것을 볼 수있을 것입니다 ... 사실 아무도 내 까다로운 질문에 투표했습니다. @ OS 긱 – vicky

0

스토어 :

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

0

는 첫째 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

관련 문제