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

升级Xcode14后编译报错:'Currency'仅在iOS16及以上版本可用

解决Xcode14升级后自定义Currency类型编译报错问题

Xcode14对应的SDK中,Foundation框架在iOS16及以上版本新增了一个名为Currency的系统类型,和你自定义的Currency结构体同名,编译器现在优先识别系统类型,因此抛出“'Currency' is only available in iOS 16 or newer”的错误。

以下是几种可行的解决办法:

  • 给自定义类型添加命名空间
    将自定义Currency放到专属命名空间内,避免和系统类型冲突:

    enum AppModels {
        struct Currency: Equatable {
            let code: String
            let symbol: String
            let localizedString: String
        }
    }
    

    使用时明确指定命名空间:

    extension Locale {
        static let availableCurrencies: [AppModels.Currency] = AppModels.Currency.availableCurrencies
    }
    
  • 重命名自定义类型
    直接修改自定义结构体的名称,比如改为AppCurrency:

    struct AppCurrency: Equatable {
        let code: String
        let symbol: String
        let localizedString: String
    }
    

    同步更新所有使用该类型的代码:

    extension Locale {
        static let availableCurrencies: [AppCurrency] = AppCurrency.availableCurrencies
    }
    
  • 使用完全限定名引用自定义类型
    如果不想调整代码结构或名称,可在使用时加上项目模块名(模块名通常和项目名称一致),明确告诉编译器要使用自定义类型:

    extension Locale {
        static let availableCurrencies: [YourProjectName.Currency] = YourProjectName.Currency.availableCurrencies
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:10:34