在Xcode项目编译的过程中,报错:
Ambiguous use of 'init(_:traits:body:)'

同时,Xcode在container.context一行报错,提示:Result of call to ‘environment’ is unused。
#Preview {
let container = CoreDataPersistenceController.shared
HomeView()
.environmentObject(AppStorageManager.shared)
.environmentObject(ExchangeRate.shared)
.environmentObject(IAPManager.shared)
.environment(\.managedObjectContext, container.context) // 加载 NSPersistentContainer
}
经过排查了解到,这一问题跟之前的《Swift environmentObject预览报错》属于统一问题,
Swift 5.9/Xcode 15 新的 #Preview,需要保证它明确返回了 View。
#Preview {
let container = CoreDataPersistenceController.shared
return HomeView()
.environmentObject(AppStorageManager.shared)
.environmentObject(ExchangeRate.shared)
.environmentObject(IAPManager.shared)
.environment(\.managedObjectContext, container.context) // 加载 NSPersistentContainer
}
给视图添加return后,问题得到解决。
否则 Swift 有时无法推断闭包是返回视图,就会提示 .environment(…) 的结果没用上(误判为“未使用的结果”)。

相关文章
Swift environmentObject预览报错:https://fangjunyu.com/2024/10/24/swift-environmentobject%e9%a2%84%e8%a7%88%e6%8a%a5%e9%94%99/