如果明确请求日期组件,日期组件可以为零吗?

问题描述 投票:0回答:1

我想知道是否可以在此处强行打开包装:

let components = calendar.dateComponents([.day], from: from, to: to)

return components.day!
swift optional nsdatecomponents
1个回答
3
投票

是的,那是完全安全的。 DateComponents的所有组件属性(例如daymonth等)都是Optional,因为您可以创建仅由一部分组件组成的DateComponents实例。

但是,Date对象始终包含所有DateComponents,因此,当您使用DateCalendar.dateComponents请求特定组件的值时,可以保证包含所请求的组件。因此,强制拆开该组件是安全的。

另一方面,如果您尝试访问您未使用DateComponents请求的Calendar.dateComponents组件,则该组件将为nil。请参阅下面的示例。

let components = Calendar.current.dateComponents([.day], from: Date())
components.day // 13
components.month // nil
© www.soinside.com 2019 - 2024. All rights reserved.