如果我在NSUserDefaults中覆盖/更改AppleLanguages,则在更改系统语言时,iOS不再更新列表。如果我保持列表不变,则数组中的第一个对象将始终是系统语言,但是,如果我在索引0处插入新对象,稍后更改系统语言,iOS将不会将新语言放在顶部列表了。有没有办法在NSUserDefaults中更改AppleLanguages并且系统语言发生变化时系统仍然会更新列表?
来自Accatyyc的解决方案非常出色,如果你使用Swift,这里就是解决方案:
创建一个main.swift文件,在接受的答案中添加Swift版本的代码:
NSUserDefaults.standardUserDefaults().removeObjectForKey("AppleLanguages")
UIApplicationMain(Process.argc, Process.unsafeArgv, NSStringFromClass(UIApplication), NSStringFromClass(AppDelegate))
转到AppDelegate并删除以下行:
@UIApplicationMain //Removing this tells Xcode to use your main.swift file
答案 0 :(得分:4)
我经过一些试验和错误后找到了解决方案!删除整个AppleLanguages键似乎将其恢复为用户在设置应用程序中设置的内容:
int main(int argc, char *argv[])
{
@autoreleasepool {
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"AppleLanguages"];
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}