在NSUserDefaults中覆盖AppleLanguages

时间:2014-07-19 13:51:21

标签: ios nsuserdefaults

如果我在NSUserDefaults中覆盖/更改AppleLanguages,则在更改系统语言时,iOS不再更新列表。如果我保持列表不变,则数组中的第一个对象将始终是系统语言,但是,如果我在索引0处插入新对象,稍后更改系统语言,iOS将不会将新语言放在顶部列表了。有没有办法在NSUserDefaults中更改AppleLanguages并且系统语言发生变化时系统仍然会更新列表?

来自Accatyyc的解决方案非常出色,如果你使用Swift,这里就是解决方案:

  1. 创建一个main.swift文件,在接受的答案中添加Swift版本的代码:

    NSUserDefaults.standardUserDefaults().removeObjectForKey("AppleLanguages")
    UIApplicationMain(Process.argc, Process.unsafeArgv, NSStringFromClass(UIApplication), NSStringFromClass(AppDelegate))
    
  2. 转到AppDelegate并删除以下行:

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

1 个答案:

答案 0 :(得分:4)

我经过一些试验和错误后找到了解决方案!删除整个AppleLanguages键似乎将其恢复为用户在设置应用程序中设置的内容:

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