iOS设备运行时Xcode报Foundation.Locale相关未定义符号错误求助
解决Xcode中Foundation.Locale相关的Undefined symbol错误
运行iOS项目时遇到以下Xcode错误:
Error (Xcode): Undefined symbol: nominal type descriptor for Foundation.Locale.LanguageCode Error (Xcode): Undefined symbol: type metadata accessor for Foundation.Locale.Language Error (Xcode): Undefined symbol: Foundation.Locale.language.getter : Foundation.Locale.Language Error (Xcode): Undefined symbol: Foundation.Locale.Language.languageCode.getter : Foundation.Locale.LanguageCode? Error (Xcode): Undefined symbol: Foundation.Locale.Region.identifier.getter : Swift.String Error (Xcode): Undefined symbol: Foundation.Locale.LanguageCode.identifier.getter : Swift.String Error (Xcode): Undefined symbol: nominal type descriptor for Foundation.Locale.Region Error (Xcode): Undefined symbol: type metadata accessor for Foundation.Locale.LanguageCode Error (Xcode): Undefined symbol: Foundation.Locale.region.getter : Foundation.Locale.Region?
解决步骤
检查iOS部署目标版本:
Foundation.Locale.Language、Region这类API是iOS 16及以上版本才引入的,如果项目部署目标低于iOS 16,必然会触发这类未定义符号错误。进入项目设置 → Project → Info → Deployment Info,把iOS版本调整到16.0或更高。清理缓存后重新构建:
- 按
Command + Shift + K清理项目 - 按
Command + Option + Shift + K清理构建文件夹 - 关闭Xcode,删除
~/Library/Developer/Xcode/DerivedData目录下对应项目的缓存文件夹 - 重新打开项目并执行构建
- 按
统一Swift版本:确保项目和所有依赖库使用的Swift版本一致。进入项目设置 → Build Settings → Swift Language Version,设置为同一个版本(推荐用Xcode默认的最新兼容版本)。
排查第三方依赖:如果项目用了第三方库,确认这些库是否支持iOS 16+,或者是否存在编译缓存问题。可以尝试更新依赖到最新版本,或者重新安装依赖:
- CocoaPods:执行
pod deintegrate && pod install - Swift Package Manager:删除依赖后重新添加
- CocoaPods:执行
检查框架链接配置:进入项目设置 → Build Phases → Link Binary With Libraries,确认
Foundation.framework已被正确添加,缺失的话手动添加进去。
内容的提问来源于stack exchange,提问作者Erfan Eghterafi
相关产品推荐
相关产品推荐

