在 Swift 尤里卡表格内循环

Loop within Swift Eureka Form

我正在构建一个 Eureka 表单,并想在表单中放置一个循环以基于数组构建一个步进器列表。

我尝试使用的代码是:

let itemNames = ["one","two","three"]

// Eureka From Set-up
form
    +++ Section("Select item values")

    for itemName in itemNames{
        <<< StepperRow() {
            [=11=].tag = itemName
            [=11=].title = itemName
            [=11=].value = 0
        }
    }

但是,当我执行此操作时,我在 StepperRow 行上收到一条错误消息:

Unary operator cannot be separated from its operand

所以看起来 Swift 不再认为它在表单中,而是将 < 符号视为小于,而不是行声明。

关于如何解决这个问题有什么想法吗?

<<< 是一个二元运算符,需要两个操作数 (lhs <<< rhs),而在上面的示例中,您只提供一个 (<<< operand)。

不可能 "pipe" for 循环的每一遍,例如每一遍都是一个 rhslhs 操作数一起使用循环的范围(第一遍的 lhsform +++ Section(...) 的结果)。但是,您可以使用 reduce 来实现此类功能。现在,我还没有用尤里卡形式测试过这个(但是在虚拟结构和运算符上),但它应该看起来像下面这样:(基于 +++<<< 中声明的运算符函数 Eureka/Source/Core/Operators.swift)

form 
    +++ itemNames.reduce(Section("Select item values")) { (section, itemName) in
        section 
            <<< StepperRow() {
                [=10=].tag = itemName
                [=10=].title = itemName
                [=10=].value = 0
            }
    }

备选答案:

let itemNames = ["one","two","three"]

// Eureka From Set-up
form
    +++ Section("Select item values")

    for itemName in itemNames{

    form.last

        <<< StepperRow() {
            [=10=].tag = itemName
            [=10=].title = itemName
            [=10=].value = 0
        }
    }

您只需在 for.loop 中添加 "form.last"。

  //You can use following approach :-

    let itemNames = ["one","two","three"]
    let section = Section("Select item values")
    form +++ section
    // Eureka From Set-up
    for itemName in itemNames{
        section <<< StepperRow() {
            [=10=].tag = itemName
            [=10=].title = itemName
            [=10=].value = 0
        }
    }