在 Swift Eureka Form 中循环

Posted

技术标签:

【中文标题】在 Swift Eureka Form 中循环【英文标题】:Loop within 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 不再认为它在表单中,而是将

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

【问题讨论】:

我想构建表单的行必须在/在同一范围/级别上。 【参考方案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
        
    

【讨论】:

以上是关于在 Swift Eureka Form 中循环的主要内容,如果未能解决你的问题,请参考以下文章

Swift Eureka 隐藏更改部分

动态生成 Eureka Form Rows

Eureka源码分析(十二) 网络通信

同样是服务注册中心,Eureka为什么比ZooKeeper优秀?

如何在 Eureka-Form 中设置默认值

深入了解 Eureka 架构原理及实现