Как правило, все единицы измерения имеют одинаковую форму:
valueInUnit1 = A * valueInUnit2 + B
B
часто даже равное нулю (метры в футы, дюймы в метры и т. Д.) И ненулевое значение только в некоторых случаях (например, при преобразовании температуры из Кельвинов в градусы Цельсия)
Вам нужно только вести список значений A и B для каждой пары единиц, чтобы преобразовать одну единицу в другую.
Обратите внимание, что вы можете даже сохранить только основные значения (например, от единиц метрической системы до других единиц) и вывести другие, так как из приведенной выше формулы вы, очевидно, можете сделать обратное
valueInUnit2 = (valueInUnit1 - B) / A = (1/A) * valueInUnit1 + (-B/A)
Таким образом, если у вас есть список значений A и B для каждой пары единиц, из которых вы хотите преобразовать единицы, у вас будет только один метод для их преобразования.
Вы можете хранить список значений A и B, где хотите, в отдельном файле PLIST, в базе данных sqlite3, в CoreData, ... (для вашего случая использование файла PLIST, вероятно, будет гораздо проще. Например, NSDictionary, ключи которого - это имя единицы происхождения, а сами значения - это NSDictionaries, ключи которых являются единицами назначения, а значения - пары A и B ... - это всего лишь предположение, а не единственное решение)