set AppleLanguages ​​не работает на ios 7?

Мне нужно установить язык по умолчанию в моем приложении. Я использую технику набора AppleLanguages в своем main.m. Но это не работает под iOS 7, хотя работает в iOS 6. Есть ли обходной путь для этого?

[[NSUserDefaults standardUserDefaults] setObject:@[@"ru"] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];

person tagtraum    schedule 17.03.2014    source источник
comment
Это работает, если вы перезапустите приложение?   -  person Antzi    schedule 17.03.2014
comment
Будет ли это работать, если вы установите AppleLanguages в качестве аргумента запуска, как описано здесь: nshipster.com/launch -аргументы-и-переменные-среды ?   -  person vokilam    schedule 17.03.2014
comment
@vokilam: На самом деле то, чего я хочу добиться, — это резервный язык по умолчанию, поэтому перед установкой языка необходимо выполнить некоторую проверку. Метод аргумента запуска не подходит для этой ситуации?   -  person tagtraum    schedule 17.03.2014
comment
@Antzi: оно работает после перезапуска приложения, но могу ли я заставить его работать без перезапуска?   -  person tagtraum    schedule 17.03.2014
comment
@vokilam об аргументах запуска: вы не можете предоставить аргументы запуска приложению в магазине, поэтому это не очень полезно, если не только для разработки   -  person Antzi    schedule 17.03.2014


Ответы (2)


Этот код работает для меня на iOS 7. Я использую его, чтобы установить иврит в качестве языка по умолчанию.

NSMutableArray* arr = [[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] mutableCopy];
[arr removeObject:targetLang];
[arr insertObject:targetLang atIndex:0];
[[NSUserDefaults standardUserDefaults] setObject:arr forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];
person Shlomi Hasin    schedule 17.06.2014

Обновите ваш main.m таким образом

int main(int argc, char * argv[]) {
    @autoreleasepool {
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        [defaults setObject:@[@"ru"] forKey:@"AppleLanguages"];
        [defaults synchronize];
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([/*Nameofyourdelegate*/class]));
    }
}

Я все еще изучаю это, см. Установить язык по умолчанию при первом запуске IOS

person Antzi    schedule 17.03.2014