在 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】:<<<
是一个二元运算符,它需要两个操作数 (lhs <<< rhs
),而在上面的示例中,您只提供一个 (<<< operand
)。
不可能对for
循环的每一遍进行“管道传输”,例如,如果每一遍都是rhs
与循环范围之外的lhs
操作数一起使用(lhs
用于第一次通过是form +++ 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
【讨论】:
我明白这一点。 @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 中循环的主要内容,如果未能解决你的问题,请参考以下文章