문제

안녕 얘들 아 난 nsuserdefaults에 문제가 있고 무슨 일이 일어나고 있는지 이해하지 못해

내 앱은 5 개의 레벨을 가지고 있으며 각 레벨은 nsuserDefaults에서 정확히 동일한 작업을 수행합니다 (레벨 기본값을 검색하고 사용자가 레벨을 재생할 때 값을 변경 한 다음 기본값을 설정하고 레벨 끝에서 동기화)가 처음 4 레벨입니다. . 히치가없는 일이지만 마지막 레벨은 값을 저장하지 않습니다. 앱은 충돌하지 않으며 마지막 레벨은 마지막으로 발생하지 않으며 응용 프로그램이 종료 될 때 기본값도 동기화됩니다. NSUSERDEFAULTS에는 최대 크기가 있습니까?

//header
NSUserDefaults *userData;


@property(nonatomic,retain) NSUserDefaults *userData;


//class file
//Sets the boolean variables for the class to use
userData = [NSUserDefaults standardUserDefaults];
boolOne = [userData boolForKey:@"LevelFiveBoolOne"];
boolTwo = [userData boolForKey:@"LevelFiveBoolTwo"];
boolThree = [userData boolForKey:@"LevelFiveBoolThree"];
boolFour = [userData boolForKey:@"LevelFiveBoolFour"];
boolFive = [userData boolForKey:@"LevelFiveBoolFive"];
boolSix = [userData boolForKey:@"LevelFiveBoolSix"];
boolSeven = [userData boolForKey:@"LevelFiveBoolSeven"];

//End Of Level
[userData setBool:boolOne forKey:@"LevelFiveBoolOne"];
[userData setBool:boolTwo forKey:@"LevelFiveBoolTwo"];
[userData setBool:boolThree forKey:@"LevelFiveBoolThree"];
[userData setBool:boolFour forKey:@"LevelFiveBoolFour"];
[userData setBool:boolFive forKey:@"LevelFiveBoolFive"];
[userData setBool:boolSix forKey:@"LevelFiveBoolSix"];
[userData setBool:boolSeven forKey:@"LevelFiveBoolSeven"];
[userData synchronize];

이러한 기본값을 사용하는보기로 전환 할 때 값은 정확하지만 응용 프로그램을 종료하고 다시 시작할 때 이러한 값은 저장되지 않으며 다른 모든 레벨은 정확히 동일한 프로세스입니다. 이것이 작동하지 않는 유일한 수준입니다. .

나는 이것을 잠시 동안 쳐다 보았고, 거기에 누군가가 같은 문제에 빠지기를 바라고 있으며 그들이 어떻게 해결했는지에 대한 통찰력을 줄 수 있습니다.

미리 감사드립니다. BWC

도움이 되었습니까?

해결책

NSUSERDEFAULTS는 프로세스 종료 방법에 따라 저장할 기회가 없을 수 있습니다.

이 답변에는 더 많은 정보가 있습니다. nsuserDefaults가 내 가치를 저장하지 않는 이유는 무엇입니까?

다른 팁

누군가가이를 실행하는 경우를 대비하여 이것을 저장할 때 nsdictionary 또는 NSARRAY (또는 변하기 쉬운 둘 다의 객체)) 사용자 기본값에서 nsurl 저장된 객체는 Synchonize에 데이터를 저장하지 않습니다!

어딘가에 :

// load the default values for the user defaults
userDefaultsValuesPath=[[NSBundle mainBundle] pathForResource:@"UserDefaults" ofType:@"plist"];
userDefaultsValuesDict=[NSDictionary dictionaryWithContentsOfFile:userDefaultsValuesPath];

// set them in the standard user defaults
[[NSUserDefaults standardUserDefaults] registerDefaults:userDefaultsValuesDict];

설정중인 초기 기본값에 LEVELFIVE 기본값이 없으면 통화가 실패합니다.

오류에 대해 -synchronize에서 반환 값을 확인하십시오.

나는이 문제를 제쳐두고 5 단계 후에 물건을 추가하여 개발을 계속하기로 결정하여 사용자가 레벨을 반복하고 기본 메뉴로 돌아갈 수 있도록 등장하는 등을 확신합니다. 레벨 5를 절약하므로 레벨 5 이전에 응용 프로그램이 마지막으로 한 일이었고 다른 일을했지만 다른 일을했지만 실제로는 디스크에 기본값을 쓰지 않았기 때문입니다. .. 나는 아직도 무엇이 잘못되었는지 확실하지 않지만 지금은 작동 중이며 동기화로 오류를 얻을 수 있는지 알 수 없습니다 ...

도와 주셔서 감사합니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top