升级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
相关产品推荐
相关产品推荐

