为UIPickerView以公制和英制创建高度数组?

Tru*_*an1 5 loops ios swift swift2

我正在尝试UIPickerView使用静态变量填充选项。有没有更快速的方法来创建公制高度列表而不是for循环?

这是我得到的:

static var heightMetric: [(key: String, value: String)] {
    var items: (key: String, value: String) = []

    for item in 30...330 {
        items.append(("\(item)", "\(item) cm"))
    }

    return items
}
Run Code Online (Sandbox Code Playgroud)

对于英制形式,有什么好办法可以5' 8"以填充UIPickerView?的格式创建选项列表。

luk*_*302 5

实际上不需要 for 循环:

static var heightMetric: [(key: String, value: String)] = {
    return (30...330).map {
        ("\($0)", "\($0) cm")
    }
}()
Run Code Online (Sandbox Code Playgroud)

您甚至可以删除显式类型并简单地编写 static var heightMetric = { ...

关于英尺和英寸形式,我不知道有任何内置功能。您要么必须通过做一点数学计算基于厘米值计算该值,要么创建一个map类似于上面的值,您可以使用%运算符将数字拆分为英尺和英寸。例如:

static var heightMetricImperial = {
    return (12...120).map {
        ("\($0)", "\($0 / 12)' \($0 % 12)\"")
    }
}()
Run Code Online (Sandbox Code Playgroud)

完整示例:

class K {
    static var heightMetric = {
        (30...330).map {
            ("\($0)", "\($0) cm")
        }
    }()

    static var heightMetricImperial = {
        (12...120).map {
            ("\($0)", "\($0 / 12)' \($0 % 12)\"")
        }
    }()
}

print(K.heightMetric)
print(K.heightMetricImperial)
Run Code Online (Sandbox Code Playgroud)