【问题标题】:Loop within Swift Eureka Form在 Swift Eureka Form 中循环
【发布时间】:2016-11-19 16:14:42
【问题描述】:

我正在构建一个 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 不再认为它在表单中,而是将

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

【问题讨论】:

  • 我想构建表单的行必须在/在同一范围/级别上。

标签: ios swift3 eureka-forms


【解决方案1】:

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

不可能对for 循环的每一遍进行“管道传输”,例如,如果每一遍都是rhs 与循环范围之外的lhs 操作数一起使用(lhs 用于第一次通过是form +++ Section(...)) 的结果。但是,您可以使用reduce 来实现此类功能。现在,我还没有使用 Eureka 表单(但是在虚拟结构和运算符上)对此进行测试,但它应该如下所示:(基于 Eureka/Source/Core/Operators.swift 中声明的 +++&lt;&lt;&lt; 运算符函数)

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

【讨论】:

  • 我明白这一点。
  • @MichaelMoulsdale 更新了我的答案(未针对 Eureka 框架进行测试,但针对虚拟类型和运算符进行了测试)。
  • 太棒了,真的对答案持怀疑态度,但它奏效了。 @xmartlabs,你们真的应该把它添加到文档中
  • @MichaelMoulsdale 很高兴听到它在 Eureka 的实践中也有效。乐于助人!
【解决方案2】:

另一种答案:

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”即可。

【讨论】:

    【解决方案3】:
      //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
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-30
      • 2014-11-17
      • 1970-01-01
      相关资源
      最近更新 更多