分子量计算器中的枚举

时间:2015-05-20 00:11:18

标签: ios arrays swift enums

我正在尝试将分子量计算器作为化学应用程序的一部分。我想这样做,以便用户在文本字段中输入文本,单击按钮,然后在单独的标签中显示结果。由于分子式是数字和字母的混合,因此我如何能够做到这一点让我感到困惑。

组织元素,我考虑将它们放入枚举中:

enum elements: Double {

 case Na = 22.99

 case O = 16.01

 case H = 1.00

}

var array: [(Int, String)] = [(number, element)]()

其中“数字”是该化合物中的许多元素。例如,H2O将为var array = [(2, H), (1, O)]

然后我想我会在数组中附加文本字段中的任何元素。例如,如果它是氢氧化钠,NaOH,阵列将显示为:var array = [(1, Na), (1, 0), (1, H)]

然后我会做一个for循环来计算总值并将它们加在一起并在标签中打印该值。

我遇到问题的部分是如何根据文本字段中的内容将项目附加到数组中。有任何想法吗?感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用字符串作为枚举的原始值,但是您无法将分子量存储在枚举中:

enum elements: String {
  case Na = "Na"
  case H = "H"
  case O = "O"
}

let sodium = elements(rawValue: "Na")

println(sodium!.rawValue) // => "Na"

所以现在你可以在一个字符串和一个具体的枚举之间进行转换。您可以使用它来创建字典以将枚举与分子量相关联:

let molecularWeights:[elements: Double] = [
  .Na: 22.99,
  .O: 16.01,
  .H: 1.00
]

println(molecularWeights[.Na]!) // => "22.99"