【问题标题】:Option value are not getting assigned to an variable correctly选项值未正确分配给变量
【发布时间】:2016-11-01 23:01:57
【问题描述】:

我有以下代码在 Swift 3 之前和升级到 Swift 3 之后可以正常工作

    let calendar = Calendar.current
    let components = (calendar as NSCalendar).components([.hour, .minute], from: currentDate)
    let hour = components.hour
    let minutes = components.minute
    var time = String(describing: hour)  + ":" + String(describing: minutes)
    var newTime = time.components(separatedBy: ":")
    var ihh = Int(newTime[0])
    var imm = Int(newTime[1])

    var shh = String(ihh!)
    var smm = String(imm!)


newTime 数组中有 2 个选项值,我确实使用调试器进行了验证。
但是,在将值分配给 ihh、imm 之后,我看到它们(ihh、imm)都是 nil。
知道如何解决这个问题吗?
博尔纳

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    var time = String(hour!) + ":" + String(minutes!)

    'Describeing ' 将“可选”字词添加到您的字符串中

    【讨论】:

    • Describing 不是原因。
    • @vadian 我在将 frpm swift 2 迁移到 swift 3 时遇到了同样的问题。我真的知道“描述”构造函数会创建不需要的前缀和后缀
    • @vadian 你写的几乎一样
    • 不,不一样,错误的原因是可选的日期组件在 Swift 2 中是非可选的。
    【解决方案2】:

    所有日期组件——顺便说一下,components 在 Swift 3 中已更改为 dateComponents,这也避免了转换为 NSCalendar——在 Swift 3 中是可选的(与 Swift 2 中的非可选不同),你必须打开它们。

    出现错误是因为像 "Optional(15)" 这样的文字无法转换为 Int

    let hour = components.hour!
    let minutes = components.minute!
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-27
      • 1970-01-01
      • 2023-02-08
      • 1970-01-01
      • 1970-01-01
      • 2020-08-30
      • 2014-04-24
      相关资源
      最近更新 更多