번들 식별자를 변경하면 사용자 기본값 집합이 달라집니다. 응용 프로그램이 샌드 박싱되지 않은 경우 이전 기본값을 읽을 수 있습니다.
// Read the old defaults from com.company.aaa
NSUserDefaults *oldDefaults = [NSUserDefaults new];
NSDictionary *oldDefaultsDict = [oldDefaults persistentDomainForName:@"com.company.aaa"];
// Store the old defaults in the standard user defaults
[[NSUserDefaults standardUserDefaults] setPersistentDomain:oldDefaultsDict forName:[[NSBundle mainBundle] bundleIdentifier]]];
당신은 아마 할 것입니다 : 이전 번들 식별자가 com.company.aaa 경우 응용 프로그램이 시작될 때 예를 들어, 새로운 응용 프로그램 + 번들 식별자로 이전 기본값을 복사하려면 다음 코드를 사용할 수 있습니다 그 이후의 재기록을 피하기 위해 이전 기본값을 한 번 가져 왔음을 나타내는 기본값 플래그를 저장합니다. 예 :
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
if (! [currentDefaults boolForKey:@"importedOldDefaultsFromAAA"]) {
// Read the old defaults from com.company.aaa
NSUserDefaults *oldDefaults = [NSUserDefaults new];
NSDictionary *oldDefaultsDict = [oldDefaults persistentDomainForName:@"com.company.aaa"];
// Store the old defaults in the standard user defaults
[currentDefaults setPersistentDomain:oldDefaultsDict forName:[[NSBundle mainBundle] bundleIdentifier]]];
// Set the flag to avoid subsequent import of old defaults
[currentDefaults setBool:YES forKey:@"importedOldDefaultsFromAAA"];
}
감사합니다. 매우 유용합니다. – Ahmed