在下面的代码片段中,我调用了一个API来从数据库中检索一些数据。
let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String:AnyObject]
if let dict = json?["personalLeagueStats"] as? [String:AnyObject] {
if let dataMostWinsAgainst = dict["leaguePersonalMostWinsAgainst"] as? [[String : AnyObject]] {
let newdictMostWinsAgainst = dataMostWinsAgainst.first!
let tempMostWinsAgainstUserName = newdictMostWinsAgainst ["member"] as? String
let tempMostWinsAgainstNumber = newdictMostWinsAgainst ["winPercentage"] as? String
let temp2number = Int(tempMostWinsAgainstNumber!)
print (temp2number)
self.mostWinsAgainstPlayer.text = tempMostWinsAgainstUserName
}
}
我认为数据(winPercentage
)存储为整数,因为我的SQL语句返回的值为例如0.67
我想在我的应用程序中以百分比显示此值,因此在Swift中我想将它乘以100.请不要问我为什么不在PHP中这样做,因为我正在尝试学习Swift并希望了解未来参考的过程。
我的理解是,在下面的代码片段中存储winPercentage
的值时,它会在tempMostWinsAgainstNumber
中存储为字符串。
当我尝试将其转换为整数(然后执行数学运算)并打印该值时,它会打印nil
。
为什么会这样?
如何将存储在`[“winPercentage”]中的值转换为整数,以便将它乘以100?
答案 0 :(得分:1)
您需要将0.67
转换为Double
,而不是Int
。
let tempMostWinsAgainstNumber = newdictMostWinsAgainst ["winPercentage"] as? String
guard let temp2number = Double(tempMostWinsAgainstNumber) else {
// the String could not be converted to a Double
}
print(temp2number)