我需要从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
}
必须有一个简单的解决方法,但是无论我如何放置?和 !在警卫声明中,编译器会抱怨。
字典值的默认类型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
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句