2013-07-08 10 views
0

응용 프로그램이 종료 될 때 저장할 두 개의 배열이 있습니다. 나는 이것을 애플 리케이션 델리게이트 내에서 NSUserDefaults를 사용하여 구현했다. 누구든지 내 코드를 살펴보고 잘못 된 것을 볼 수 있습니까? 그것은 전혀 작동하지 않습니다.응용 프로그램 대리인에 데이터 저장

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    workouts = [NSMutableArray arrayWithObjects:nil]; 
    menu = [NSMutableArray arrayWithObjects:@"Home",nil]; 
    workoutNames = [NSMutableArray arrayWithObjects:nil]; 
    routinesMade = [NSMutableArray arrayWithObjects:nil]; 
    test = [NSMutableArray arrayWithObjects:nil]; 

    defaults = [NSUserDefaults standardUserDefaults]; 
    self.workouts = [defaults objectForKey:@"workouts"]; 
    self.menu = [defaults objectForKey:@"menu"]; 
    self.workoutNames = [defaults objectForKey:@"workoutNames"]; 
    self.routinesMade = [defaults objectForKey:@"routinesMade"]; 


    return YES; 
} 


- (void)applicationWillTerminate:(UIApplication *)application 
{ 

    defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:workouts forKey:@"workouts"]; 
    [defaults setObject:menu forKey:@"menu"]; 
    [defaults setObject:workoutNames forKey:@"workoutNames"]; 
    [defaults setObject:routinesMade forKey:@"routinesMade"]; 
    [defaults synchronize]; 

} 

Btw는 헤더 파일의 기본값을 선언했습니다. 고마워요!

+0

널 (null)이 포함되어 있기 때문에 null를 재정의, 내가 첫 번째 방법에서 데이터를로드했습니다. –

+0

NSMutableArrays를 할당/초기화 할 수 있습니까? 또한 동기화를 호출 할 때 배열이 저장되어 있는지 확인하십시오. – MichaelScaria

답변

4

나는 문제가 무엇인지 알고 있다고 생각합니다. 코드는 applicationWillTerminate: 메소드 안에 있습니다. 명시 적으로 백그라운드에서 실행되지 않도록 응용 프로그램을 설정하지 않는 한 ('응용 프로그램이 백그라운드에서 실행되지 않음'키를 설정하여) 시스템에서 종료 될 때까지이 메소드가 절대 호출되지 않습니다. 이미 정지되었습니다.

이 경우 applicationDidEnterBackground: 메서드에서 필요한 정보를 저장하는 것이 좋습니다.

희망이 도움이됩니다.

0

운동과 self.workouts은 하나의 속성입니까? 그래서 당신이 다음

workouts = [NSMutableArray arrayWithObjects:nil]; 

배열

을 만들 [defaults objectForKey:@"workouts"] 내가 언급하는 것을 잊었다

관련 문제