我正在尝试制作一个分子量计算器作为化学应用程序的一部分。我想让用户在文本字段中输入文本,单击按钮,然后在单独的标签中显示结果。由于分子式是数字和字母的混合,我对如何做到这一点感到困惑。
为了组织元素,我考虑将它们放到一个枚举中:
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循环来计算总值,并将其相加,然后将该值打印到标签中。
我遇到麻烦的部分是如何根据文本字段中的内容将项附加到数组中。有什么想法吗?谢谢。
发布于 2015-05-20 08:54:04
您可以使用字符串作为枚举的原始值,但不能将分子量存储在枚举中:
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"https://stackoverflow.com/questions/30338179
复制相似问题