2013-01-08 2 views
0

매우 이상한 상황이 있습니다.집 버튼을 클릭하면 AppDelegate 값이 변경되지 않습니다.

appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 

와 응용 프로그램 사이에 공유가 다른 값을 저장합니다

나는이 같은 AppDelegate에 사용하고 있습니다.

@property (nonatomic, retain) NSString *campaignTitle; 

예컨대 나는 사용자가 처음으로 응용 프로그램을 열 - 나는 속성에 값을 할당하고 애플리케이션 라이프 사이클 동안 그들에게 심지어 몇 시간을 변경할 수 있습니다.

사용자 가 홈 버튼 클릭, 나는 새로운 값을 할당하려고하면 다음 응용 프로그램을 다시에 opend 경우

appDelegate.campaignTitle = theTitle; 

그러나, - AppDelegate에 값을 변경하고 이전 사람과 유지되지 않습니다.

무엇이 잘못 되었나요? 나의 이해에 대한

+0

당신이 (예를 들어, NSUserDefaults에) 곳이 값을 저장합니까? – tilo

+0

아니요. NSUserDefaults에 저장할 수 있습니다.하지만 그 이유는 무엇입니까? appdelegate와 함께 작동하지 않아? – Dejell

답변

1

당신은 사용할 수 없습니다 AppDelegate에를 . 영구 저장소로 설계되지 않았습니다. 데이터가 저장되는 경우

는 당신이 그것을 저장 NSUserDefaults를 사용해야 만 작다. 더 복잡한 경우에는 CoreData를 사용해야합니다.

둘째, 당신은 모든 글로벌 데이터를 저장하기 위해 AppDelegate에를 사용하지 않아야합니다. 이러한 유형의 정보를 저장하려면 별도의 싱글 톤 클래스를 사용하는 것이 훨씬 더 좋습니다. 그런 다음 데이터의 get 및 set 메서드를 캡슐화하여 NSUserDefaults에 넣을 수 있습니다.

SingletonClass.m 

- (NSString*)campaignTitle 
{ 
    return [[NSUserDefaults standardUserDefaults] objectForKey:@"CampaignTitle"]; 
} 

- (void)setCampaignTitle:(NSString*)campaignTitle 
{ 
    [[NSUserDefaults standardUserDefaults] setObject:campaignTitle forKey:@"CampaignTitle"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]]; 
} 
+0

나는 그것을 시도하고 – Dejell

+0

를 작동하는 경우 당신은 (대신 재산의)를 AppDelegate에이 코드를 넣을 수 있습니다 볼 수 있지만 그것은 독립 실행 형 싱글에 투입하는 것이 좋습니다 것입니다. AppDelegate에서 먼저 시도해보십시오. – Fogmeister

2

당신이 AppDelegate에의 저장 값은 세션에 저장됩니다. 앱을 닫거나 앱을 다시 열 때 데이터가 유지되도록하려면 저장하십시오.

내가 CoreData 추천 할 것입니다 좀 더 복잡한 상황에서는 NSUserDefaults

//store the integer 35 for the key "ageKey" 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setInteger:35 forKey:@"ageKey"]; 
... 
//retrieve the data from the key "ageKey" 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSInteger age = [defaults integerForKey:@"ageKey"]; 

을 사용하고이 일을하는 가장 쉬운 방법 :이 방법

http://developer.apple.com/library/mac/#documentation/cocoa/Conceptual/CoreData/cdProgrammingGuide.html

관련 문제