7

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

我尝试使用的代码是:

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

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

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

但是,当我这样做时,我在 StepperRow 行上收到一个错误,上面写着:

Unary operator cannot be separated from its operand

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

关于如何解决这个问题的任何想法?

4

3 回答 3

5

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

不可能“管道”for循环的每一遍,例如,如果每一遍都与循环范围之外的操作数rhs一起使用(第一遍是 的结果)。但是,您可以利用来实现此类功能。现在,我还没有用 Eureka 表单测试过这个(但是在虚拟结构和运算符上),但它应该看起来像下面这样:(基于Eureka/Source/Core/Operators.swift中声明的and运算符函数)lhslhsform +++ Section(...)reduce+++<<<

form 
    +++ itemNames.reduce(Section("Select item values")) { (section, itemName) in
        section 
            <<< StepperRow() {
                $0.tag = itemName
                $0.title = itemName
                $0.value = 0
            }
    }
于 2016-11-19T16:16:57.520 回答
4

替代答案:

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

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

    for itemName in itemNames{

    form.last

        <<< StepperRow() {
            $0.tag = itemName
            $0.title = itemName
            $0.value = 0
        }
    }

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

于 2017-01-05T01:33:05.363 回答
2
  //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() {
            $0.tag = itemName
            $0.title = itemName
            $0.value = 0
        }
    }
于 2018-07-05T12:56:34.403 回答