我想知道是否可以在此处强行打开包装:
let components = calendar.dateComponents([.day], from: from, to: to)
return components.day!
是的,那是完全安全的。 DateComponents
的所有组件属性(例如day
,month
等)都是Optional
,因为您可以创建仅由一部分组件组成的DateComponents
实例。
但是,Date
对象始终包含所有DateComponents
,因此,当您使用Date
从Calendar.dateComponents
请求特定组件的值时,可以保证包含所请求的组件。因此,强制拆开该组件是安全的。
另一方面,如果您尝试访问您未使用DateComponents
请求的Calendar.dateComponents
组件,则该组件将为nil
。请参阅下面的示例。
let components = Calendar.current.dateComponents([.day], from: Date())
components.day // 13
components.month // nil