我需要在json文件中解析字典中的数据(包含相同的键)。问题是在某些词典中,同一个键的值是一个字符串,但在另一个字典中它是一个浮点数。 (可选读:原因是我使用的csv到json转换器确实将负十进制数识别为字符串,因为在破折号后面有一个空格:" - 4.50"。我将字符串解包后删除该空格并转换为浮动。)
我尝试执行以下操作:
guard let profit = data["profit"] as? AnyObject else { return }
if profit as! Float != nil {
// Use this value
} else {
// It is a string, so delete the space and cast to float
}
必须有一个简单的解决方案,但无论我怎么把它?而且!在守卫声明中,编译器会抱怨。
答案 0 :(得分:1)
无论如何,字典值的默认类型为AnyObject
,因此此类型转换是多余的。
您只需使用is
操作数
guard let profit = data["profit"] else { return }
if profit is Float {
// Use this value
} else {
// It is a string, so delete the space and cast to float
}
或者包括正确的类型转换
guard let profit = data["profit"] else { return }
if let profitFloat = profit as? Float {
// Use this value
} else if let profitString = profit as? String {
// It is a string, so delete the space and cast to float
}