在 Swift 尤里卡表格内循环
Loop within Swift Eureka Form
我正在构建一个 Eureka 表单,并想在表单中放置一个循环以基于数组构建一个步进器列表。
我尝试使用的代码是:
let itemNames = ["one","two","three"]
// Eureka From Set-up
form
+++ Section("Select item values")
for itemName in itemNames{
<<< StepperRow() {
[=11=].tag = itemName
[=11=].title = itemName
[=11=].value = 0
}
}
但是,当我执行此操作时,我在 StepperRow 行上收到一条错误消息:
Unary operator cannot be separated from its operand
所以看起来 Swift 不再认为它在表单中,而是将 < 符号视为小于,而不是行声明。
关于如何解决这个问题有什么想法吗?
<<<
是一个二元运算符,需要两个操作数 (lhs <<< rhs
),而在上面的示例中,您只提供一个 (<<< operand
)。
不可能 "pipe" for
循环的每一遍,例如每一遍都是一个 rhs
与 lhs
操作数一起使用循环的范围(第一遍的 lhs
是 form +++ Section(...)
的结果)。但是,您可以使用 reduce
来实现此类功能。现在,我还没有用尤里卡形式测试过这个(但是在虚拟结构和运算符上),但它应该看起来像下面这样:(基于 +++
和 <<<
中声明的运算符函数 Eureka/Source/Core/Operators.swift)
form
+++ itemNames.reduce(Section("Select item values")) { (section, itemName) in
section
<<< StepperRow() {
[=10=].tag = itemName
[=10=].title = itemName
[=10=].value = 0
}
}
备选答案:
let itemNames = ["one","two","three"]
// Eureka From Set-up
form
+++ Section("Select item values")
for itemName in itemNames{
form.last
<<< StepperRow() {
[=10=].tag = itemName
[=10=].title = itemName
[=10=].value = 0
}
}
您只需在 for.loop 中添加 "form.last"。
//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() {
[=10=].tag = itemName
[=10=].title = itemName
[=10=].value = 0
}
}
我正在构建一个 Eureka 表单,并想在表单中放置一个循环以基于数组构建一个步进器列表。
我尝试使用的代码是:
let itemNames = ["one","two","three"]
// Eureka From Set-up
form
+++ Section("Select item values")
for itemName in itemNames{
<<< StepperRow() {
[=11=].tag = itemName
[=11=].title = itemName
[=11=].value = 0
}
}
但是,当我执行此操作时,我在 StepperRow 行上收到一条错误消息:
Unary operator cannot be separated from its operand
所以看起来 Swift 不再认为它在表单中,而是将 < 符号视为小于,而不是行声明。
关于如何解决这个问题有什么想法吗?
<<<
是一个二元运算符,需要两个操作数 (lhs <<< rhs
),而在上面的示例中,您只提供一个 (<<< operand
)。
不可能 "pipe" for
循环的每一遍,例如每一遍都是一个 rhs
与 lhs
操作数一起使用循环的范围(第一遍的 lhs
是 form +++ Section(...)
的结果)。但是,您可以使用 reduce
来实现此类功能。现在,我还没有用尤里卡形式测试过这个(但是在虚拟结构和运算符上),但它应该看起来像下面这样:(基于 +++
和 <<<
中声明的运算符函数 Eureka/Source/Core/Operators.swift)
form
+++ itemNames.reduce(Section("Select item values")) { (section, itemName) in
section
<<< StepperRow() {
[=10=].tag = itemName
[=10=].title = itemName
[=10=].value = 0
}
}
备选答案:
let itemNames = ["one","two","three"]
// Eureka From Set-up
form
+++ Section("Select item values")
for itemName in itemNames{
form.last
<<< StepperRow() {
[=10=].tag = itemName
[=10=].title = itemName
[=10=].value = 0
}
}
您只需在 for.loop 中添加 "form.last"。
//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() {
[=10=].tag = itemName
[=10=].title = itemName
[=10=].value = 0
}
}