首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包含控制流语句的闭包不能与结果生成器“”ViewBuilder“”一起使用

包含控制流语句的闭包不能与结果生成器“”ViewBuilder“”一起使用
EN

Stack Overflow用户
提问于 2021-11-08 22:54:23
回答 1查看 325关注 0票数 1

我是编程新手,我正在尝试swiftSoup,但当我输入代码时,它给我这个错误:(包含控制流语句的闭包不能与结果生成器‘ViewBuilder’一起使用)如果我在错误的位置输入代码,或者我忘记了什么,我就不会!

enter image description here

这是代码

代码语言:javascript
复制
import SwiftUI
import SwiftSoup

struct ContentView: View {

    
    var body: some View {
        do {
           let html = "<html><head><title>First parse</title></head>"
               + "<body><p>Parsed HTML into a doc.</p></body></html>"
           let doc: Document = try SwiftSoup.parse(html)
            let p: Element = try doc.select("title").first()!
            rint(p)
        } catch Exception.Error(let type, let message) {
            print(message)
        } catch {
            print("error")
        }

    }

}


struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-09 01:04:56

不幸的是,您的代码有点混乱。

您会看到以下内容:

代码语言:javascript
复制
struct ContentView: View {
    var body: some View {
       // Some Stuff here
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

这是试图为您的应用程序创建用户界面的SwiftUI代码。不幸的是,它不像“普通”的Swift代码。有一些幕后的事情使得创建用户界面变得容易,但如果你是编程新手就很难理解了。

您将“普通老式代码”放在视图声明的中间,编译器在那里看到它时会感到非常困惑。

相反,让我们将您的代码放入一个函数中。然后你就可以调用这个函数了。

代码语言:javascript
复制
struct ContentView: View {
    var body: some View {
    }
}


struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

func parseSomeHTML() {
    do {
        let html = """
            <html>
                <head>
                    <title>First parse</title>
                </head>"
                <body>
                    <p>Parsed HTML into a doc.</p>
                </body>
            </html>
       """

        let doc: Document = try SwiftSoup.parse(html)
        let p: Element = try doc.select("title").first()!
        print(p)
    } catch Exception.Error(let type, let message) {
        print(message)
    } catch {
        print("error")
    }
}

现在,您的代码位于一个普通的Swift函数中。但你需要从某个地方调用它。让我们添加一个按钮来调用您的函数。将contentView更改为:

代码语言:javascript
复制
struct ContentView: View {
    var body: some View {
        Button("Push Me", action: { parseSomeHTML() })
    }
}

现在,当您运行应用程序时,您应该有一个按钮,按下该按钮应该会调用parseSomeHTML函数。

(请注意,我是如何使用三重双引号(“)在HTML中格式化多行字符串的。这不是必需的,您应该可以使用它,但它更漂亮)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69890865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档