我想检测用户对设备使用的语言。然后我想将语言更改为其他语言,应用程序将加载适当的图像,字符串,故事板。
我使用以下方法检测语言:
let lang: String = NSLocale.preferredLanguages()[0] as String
然而,即使我的iOS模拟器设置为阿拉伯语,这也会为我返回“en”。
根据Objective-C问题,我尝试执行以下操作将语言更改为阿拉伯语:
NSUserDefaults.setValue("ar", forKey: "AppleLanguage")
但这会发出错误:
Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSUserDefaults 0x103daa350> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key AppleLanguage.'
答案 0 :(得分:1)
使用您编写的代码,编译器认为您正在尝试使用KVO,设置值&#34; ar&#34;到物业&#34; AppleLanguage&#34; NSUserDefaults类。哪个不存在。
使用setObject:forKey:
代替setValue:forKey
:
NSUserDefaults.setObject(["ar"], forKey: "AppleLanguage") // First param is an array.
我从未在Swift中编码,但是在更新其中的任何内容之前,您是否需要获得标准默认值NSUserDefaults.standardUserDefaults()
?
答案 1 :(得分:0)
回答有关检测设备当前语言的问题
NSLocale.currentLocale().objectForKey(NSLocaleLanguageCode)! as! String