Crear matriz de altura en métrica e imperial para UIPickerView?

Estoy intentando llenar un UIPickerView con opciones usando una variable estática. ¿Hay una manera más rápida de crear una list de altura métrica en lugar de for-loop?

Esto es lo que obtuve:

 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 } 

Para la forma imperial, ¿alguna idea de una buena forma de crear la list de opciones en un formatting de 5' 8" para llenar un UIPickerView ?

No es necesario que el for-loop realmente:

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

Incluso puede soltar el tipo explícito y simplemente escribir static var heightMetric = { ...

Con respecto a la forma de pie y pulgada, no conozco ninguna funcionalidad incorporada para eso. Usted tiene que calcular el valor basado en el valor del centímetro haciendo un poco de matemáticas o crear un map similar al anterior donde puede usar el operador % para dividir el número en pies y pulgadas. Por ejemplo:

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

Ejemplo completo:

 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)