-1

我有一个问题。我有一个字典类型 [String: Any]

我的有效代码是

dict["start"] = "\(start.hour!):\(start.minute!)"
if let end = end {
    dict["end"] = "\(end.hour!):\(end.minute!)"
}

但是当我使用 swiftlint 时,它会给我一个强制解包错误。必须保存价值,所以如果 let 在这里不好:)

4

2 回答 2

1

这主要是一个语义问题,但你可以这样做:

if let startHour = start.hour,
   let startMinute = start.minute {

    dict["start"] = "\(startHour):\(startMinute)"

    if let end = end,
       let endHour = end.hour,
       let endMinute = end.minute {

       dict["end"] = "\(endHour):\(endMinute)"
    }
}

...或类似的东西——因为在 Swift 中有多种方法可以安全地解开一个可选项。

于 2020-01-10T11:43:43.967 回答
0

您可以尝试以下演示代码。我希望它会帮助你。

import Foundation

let calendar = Calendar.current

let dateComponents = DateComponents(hour: 12, minute: 20, second: 55)

func getHoursMinutesFrom(time: DateComponents) -> (hour: Int,minute: Int) {
    switch (time.hour, time.minute) {
    case let (.some(hour), .some(minutes)):
        return (hour,minutes)
    default:
        return (0,0)
    }
}

print(getHoursMinutesFrom(time: dateComponents))
于 2020-01-10T11:57:57.600 回答