【问题标题】:Swift Converting Optional String to IntSwift 将可选字符串转换为 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)。
  • 括号里有吗?

标签: json swift http-headers alamofire


【解决方案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))
    }

【讨论】:

  • 谢谢,这对我有用。我可以发誓我在故障排除时尝试过这个,谢谢!
猜你喜欢
  • 1970-01-01
  • 2016-01-05
  • 1970-01-01
  • 1970-01-01
  • 2020-09-11
  • 2016-01-27
  • 1970-01-01
  • 2011-10-02
相关资源
最近更新 更多