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

时间:2016-05-29 11:34:59

标签: ios swift loops 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
}

对于英制形式,有什么想法以5' 8"格式创建选项列表以填充UIPickerView吗?

1 个答案:

答案 0 :(得分:4)

实际上不需要for循环:

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

您甚至可以删除显式类型,只需编写static var heightMetric = { ...

即可

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

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

完整示例:

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)