Xcode 15中GeneratedAssetSymbols出现“Ambiguous use of...”错误求助
Xcode 15 GeneratedAssetSymbols引发macOS SwiftUI项目构建失败的解决方法
开启Xcode 15的生成资源符号功能后,macOS SwiftUI项目出现构建失败问题:自动生成的GeneratedAssetSymbols文件(约13000行)中有近1000行报错,错误全部集中在SwiftUI.Color的扩展代码中。
示例报错代码:
static var gr150: SwiftUI.Color { .init(.gr150) }
编译器提示存在两个候选匹配项,导致类型歧义:
第一个是AppKit.NSColor的扩展属性:
/// The "gr150" asset catalog color. static var gr150: AppKit.NSColor { #if !targetEnvironment(macCatalyst) .init(resource: .gr150) #else .init() #endif }
第二个是ColorResource的静态常量:
/// The "gr150" asset catalog color resource. static let gr150 = ColorResource(name: "gr150", bundle: resourceBundle)
修复构建错误
方法1:明确指定资源类型
修改GeneratedAssetSymbols中报错的SwiftUI.Color扩展代码,将模糊的.gr150明确指定为ColorResource类型,消除歧义:
static var gr150: SwiftUI.Color { .init(ColorResource.gr150) }
注意:该文件为自动生成,清理构建后会被覆盖,建议升级至Xcode 15最新补丁版本(该问题大概率是Xcode初始版本的bug)以彻底解决。
方法2:通过NSColor转换初始化
借助已有的NSColor扩展属性来初始化SwiftUI.Color,绕开类型歧义问题:
static var gr150: SwiftUI.Color { .init(NSColor.gr150) }
关闭GeneratedAssetSymbols功能
如果暂时不需要该功能,可按以下步骤操作:
- 选中项目对应的Target,进入Build Settings标签页
- 在搜索框输入
Generate Asset Symbols,找到该配置项 - 将其值修改为
NO
针对Swift Package Manager管理的项目,需在Package.swift的Target配置中添加参数:
.target( name: "YourTargetName", dependencies: [], generateAssetSymbols: false )
内容的提问来源于stack exchange,提问作者Peter R
相关产品推荐
相关产品推荐

