You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode SwiftUI报'ContentView不符合View协议'等错误如何解决

问题根源

三个报错全部由括号闭合错位导致:scannerSheet计算属性本身没有正确闭合,导致后续的body属性被错误嵌套进scannerSheet内部,触发连锁编译错误:

  • 「Type 'ContentView' does not conform to protocol 'View'」:View协议要求必须实现的body属性没有定义在ContentView结构体的根层级,编译器找不到合规的body实现,判定不遵守协议
  • 「Function declares an opaque return type, but has no return statements in its body from which to infer an underlying type」:scannerSheet声明返回some View类型,但因为括号错位,编译器无法识别你要返回CodeScannerView实例,也找不到对应的return语句
  • 「Result of 'CodeScannerView' initializer is unused」:括号错位后,编译器判定你只是创建了CodeScannerView实例但没有返回/使用它,后续嵌套的body定义属于无效代码
修复后完整代码
import SwiftUI
import CodeScanner

struct ContentView: View {
    @State var isPresentingScanner = false
    @State var scannedCode: String = "Scan a QR code to get started."
    
    var scannerSheet : some View {
        CodeScannerView(
            codeTypes: [.qr],
            completion: { result in
                if case let .success(code) = result {
                    self.scannedCode = code.string
                    self.isPresentingScanner = false
                }
            }
        )
    } // 补全scannerSheet计算属性的闭合括号,修正嵌套错误
    
    var body: some View {
        VStack(spacing: 10) {
            Text(scannedCode)
            
            Button("Scan QR code") {
                self.isPresentingScanner = true
            }
            .sheet(isPresented: $isPresentingScanner) {
                self.scannerSheet
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
避坑提示

写SwiftUI代码时注意保持缩进对齐,点击Xcode编辑器里任意大括号,编辑器会高亮配对的另一半括号;写闭包、计算属性时写完开头括号就先补全结束括号,再往中间填内容,可以避免绝大多数括号错位问题。

内容的提问来源于stack exchange,提问作者Jay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 23:01:09