You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI报错:'language'仅在iOS 16及以上版本可用,求解决方案

解决‘language is only available in iOS 16 or newer’错误

这个错误是因为你使用的Locale.current.language是iOS 16及以上版本才新增的API,若你的项目部署目标低于iOS 16,就会触发该报错。以下是两种可行的解决方案:

方案1:直接改用兼容低版本的API

将Locale.current.language.languageCode?.identifier替换成iOS 16之前就存在的Locale.current.languageCode,修改后代码如下:

var selectedLanguage: String {
    get {
        return UserDefaults.standard.string(forKey: selectedLanguageKey) ?? Locale.current.languageCode ?? "en" // Default language is English
    }
    set {
        UserDefaults.standard.set(newValue, forKey: selectedLanguageKey)
        NotificationCenter.default.post(name: .languageDidChange, object: nil)
    }
}

Locale.current.languageCode同样会返回当前系统的语言代码(如"zh"、"en"),和你原代码的效果一致,且支持所有iOS版本。

方案2:同时兼容新旧版本

如果你的项目需要覆盖iOS 16及以上和更低版本的设备,可以用条件编译做区分处理:

var selectedLanguage: String {
    get {
        let defaultLanguage: String
        if #available(iOS 16.0, *) {
            defaultLanguage = Locale.current.language.languageCode?.identifier ?? "en"
        } else {
            defaultLanguage = Locale.current.languageCode ?? "en"
        }
        return UserDefaults.standard.string(forKey: selectedLanguageKey) ?? defaultLanguage
    }
    set {
        UserDefaults.standard.set(newValue, forKey: selectedLanguageKey)
        NotificationCenter.default.post(name: .languageDidChange, object: nil)
    }
}

内容的提问来源于stack exchange,提问作者Aray Moore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 13:42:17