ios - 在 Swift Eureka Form 中循环

标签 ios swift3 eureka-forms

我正在构建一个 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 不再认为它在表单中,而是将 < 符号视为小于,而不是行声明。

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

最佳答案

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

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

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

关于ios - 在 Swift Eureka Form 中循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40695097/

相关文章:

ios - 无法格式化 DateTimeInlineRow 返回的日期的时区

iphone - UISearchBar 范围按钮不会显示 iOS 6

iphone - 合并 ARC 和非 ARC 文件不起作用

swift 3 : Safe way to decode values with NSCoder?

ios - 快速谷歌登录

ios - 如何在 Swift 中对 Eureka 库中的 MultipleSelectorRow 值进行排序?

ios - Eureka Forms 基于 SegmentedRow 隐藏验证错误

ios - 理解 block (用推特登录)

ios - 我可以在单击 TableViewCell 时将 View 更改为 ViewController 吗?

ios - Xcode 8 Pod 更新问题 - 由于主要版本更新而重新创建 CocoaPods