2014-07-19 12 views
6

Jeśli zmienię/zmienię język AppleLanguage w NSUserDefaults, system iOS nie aktualizuje już listy po zmianie języka systemu. Jeśli pozostawiam tę listę niezmienioną, pierwszy obiekt w tablicy będzie zawsze językiem systemowym, jednak jeśli wstawię nowy obiekt w indeksie 0, a później zmieni się język systemu, system iOS nie umieści nowego języka na wierzchu lista już. Czy istnieje sposób na zmianę języka AppleLanguages ​​w NSUserDefaults i nadal ma aktualizować system listę po zmianie języka systemu?Zastępowanie języków AppleLanguages ​​w NSUserDefaults

Rozwiązanie z Accatyyc działa rewelacyjnie, tutaj jest rozwiązanie, jeśli używasz Swift:

  1. Utwórz plik main.swift dodaj Swift wersji kodu w przyjętym odpowiedź:

    NSUserDefaults.standardUserDefaults().removeObjectForKey("AppleLanguages") 
    UIApplicationMain(Process.argc, Process.unsafeArgv, NSStringFromClass(UIApplication), NSStringFromClass(AppDelegate)) 
    
  2. Przejdź do AppDelegate i usuń następujący wiersz:

    @UIApplicationMain //Removing this tells Xcode to use your main.swift file 
    
+0

Mam ten sam problem, czy znalazłeś jakieś rozwiązanie? – Accatyyc

Odpowiedz

4

Znalazłem rozwiązanie po kilku próbach i błędzie! Usunięcie całego klawisza AppleLanguages ​​wydaje się przywrócić go do tego, co użytkownik ustawił w ustawieniach aplikacji:

int main(int argc, char *argv[]) 
{ 
    @autoreleasepool { 
     [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"AppleLanguages"]; 
     return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 
    } 
}