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

<<<二項演算子で、2 つのオペランド ( lhs <<< rhs) を必要としますが、上記の例では 1 つのみ ( <<< operand) を指定します。

各パスがループのスコープ外のオペランドで使用さforれる場合など、ループの各パスを「パイプ」することはできません(最初のパスは の結果です)。ただし、 を使用してそのような機能を実現することはできます。今、私はこれを Eureka フォームでテストしていませんが (ただし、ダミーの構造と演算子では)、次のようになるはずです: ( Eureka/Source/Core/Operators.swiftで宣言されたand演算子関数に基づく)rhslhslhsform +++ 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 に答える