Swift 将可选字符串转换为 Int

Posted

技术标签:

【中文标题】Swift 将可选字符串转换为 Int【英文标题】:Swift Converting Optional String to Int 【发布时间】:2016-10-23 00:18:06 【问题描述】:

这似乎是一个非常基本的问题,但由于某种原因无法解决。我正在使用 Alamofire 解析 JSON 并尝试获取一个标头值,该值告诉我当前的 api 速率限制。

if let xRate = String(describing: response.response?.allHeaderFields["X-Ratelimit-Remaining"])as String? 
    self.jsonCallsRemaining = xRate                    
    print("json: ", xRate)
    print("json2: ", Int(xRate))                    

当尝试获取 xRate(或 Float 或 Double)的 Int 时,我得到“nil”。在我看到的consolve中:

json: 可选(79)

json2: 无

该数字似乎以可选字符串的形式返回。我错过了一些明显的东西吗?斯威夫特新手。谢谢!

【问题讨论】:

去掉if let行末尾的as String? 感谢@rmaddy,但 Int(xRate) 仍然返回为零。 @user2452063 那么字符串可能不是有效的十进制整数。 @AlexanderMomchliov 我原本以为是这样,但也无法将其作为浮点数或双精度数。打印出字符串时,它会显示如下数字:(89)。 括号里有吗? 【参考方案1】:

也许,您的String.init(describing:) 是多余的和不必要的。

    if let xRate = response.response?.allHeaderFields["X-Ratelimit-Remaining"] as? String 
        self.jsonCallsRemaining = xRate
        print("json: ", xRate)
        print("json2: ", Int(xRate))
    

【讨论】:

谢谢,这对我有用。我可以发誓我在故障排除时尝试过这个,谢谢!

以上是关于Swift 将可选字符串转换为 Int的主要内容,如果未能解决你的问题,请参考以下文章

flatMap API 合约如何将可选输入转换为非可选结果?

Swift - 将 nil 核心数据字符串转换为可选值

将可选数据写入 Firebase

如何在 Swift 中将 Int 转换为字符

如何将 Int 数组转换为字符串? Swift 中的数组

如何在 Swift 中将 Int 转换为十六进制字符串