Xcode提示:Ambiguous use of ‘init(_:traits:body:)’
Xcode提示:Ambiguous use of ‘init(_:traits:body:)’

Xcode提示:Ambiguous use of ‘init(_:traits:body:)’

在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/

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注