如果明确请求组件,日期组件可以为零吗?
Can date components be nil if explicity requesting the component?
我想知道是否可以在这里强制解包:
let components = calendar.dateComponents([.day], from: from, to: to)
return components.day!
是的,那是完全安全的。 DateComponents
的所有组件属性(例如 day
、month
等)都是 Optional
,因为您可以创建仅包含一个子集的 DateComponents
实例组件。
但是,Date
对象始终包含所有 DateComponents
,因此当您使用 Calendar.dateComponents
从 Date
请求特定组件的值时,可以保证包含请求的组件。所以强制展开该组件是安全的。
另一方面,如果您尝试访问 DateComponents
的组件,而您没有使用 Calendar.dateComponents
请求,那将是 nil
。请参阅下面的示例。
let components = Calendar.current.dateComponents([.day], from: Date())
components.day // 13
components.month // nil
我想知道是否可以在这里强制解包:
let components = calendar.dateComponents([.day], from: from, to: to)
return components.day!
是的,那是完全安全的。 DateComponents
的所有组件属性(例如 day
、month
等)都是 Optional
,因为您可以创建仅包含一个子集的 DateComponents
实例组件。
但是,Date
对象始终包含所有 DateComponents
,因此当您使用 Calendar.dateComponents
从 Date
请求特定组件的值时,可以保证包含请求的组件。所以强制展开该组件是安全的。
另一方面,如果您尝试访问 DateComponents
的组件,而您没有使用 Calendar.dateComponents
请求,那将是 nil
。请参阅下面的示例。
let components = Calendar.current.dateComponents([.day], from: Date())
components.day // 13
components.month // nil