Я пытаюсь установить язык для своего приложения при первом запуске.
Увидев этот вопрос, я решил сделать то же самое.
Установка языка по умолчанию для приложения iPhone при первом запуске
Я немного адаптировал код и сделал это:
int main(int argc, char * argv[]) {
@autoreleasepool {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@[[ITConf getStringForKey:ITConfLocale]] forKey:@"AppleLanguages"];
[defaults synchronize];
return UIApplicationMain(argc, argv, nil, NSStringFromClass([ITAppDelegate class]));
}
}
Но этот код не работает (изменения вносятся после второго запуска). Однако следующий код выполняется без проблем:
int main(int argc, char * argv[]) {
@autoreleasepool {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@[@"fr"] forKey:@"AppleLanguages"];
[defaults synchronize];
return UIApplicationMain(argc, argv, nil, NSStringFromClass([ITAppDelegate class]));
}
}
Не понимаю почему. ITConf возвращает строку из файла .plist, см.:
NSString *fileP = [[NSBundle mainBundle] pathForResource:@"Conf" ofType:@"plist"];
dictionary = [[NSDictionary alloc] initWithContentsOfFile:fileP];
return dictionary[key];
Я проверил с помощью LLDB, и NSString возвращается правильно с правильным значением.
Для меня это похоже на черную магию!