在 SwiftUI 中通过 Date() 读取星期几以获取本地通知

Posted

技术标签:

【中文标题】在 SwiftUI 中通过 Date() 读取星期几以获取本地通知【英文标题】:Reading out the day of the week via Date () for local notifications in SwiftUI 【发布时间】:2021-02-05 17:36:53 【问题描述】:

我正在尝试发送带有本地通知的特定消息,这取决于星期几,现在我的代码必须知道它是星期几才能发送通知。

谢谢。

【问题讨论】:

【参考方案1】:

您可以像这样获取当前日期的单个组件(在我们的例子中是星期几):

if Calendar.current.component(.weekday, from: Date()) == 1 
    // Yay, it's Sunday!

来自文档:“工作日单位是数字 1 到 N(公历 N=7,1 是星期日)。”

【讨论】:

好的,但我也可以使用 UNTimeIntervalNotificationTrigger 触发器触发通知。或类似的东西? 你最初的问题不是很清楚,但是UNTimeIntervalNotificationTrigger需要一个时间间隔。我假设您想在即将到来的工作日触发通知。 CalendarDateComponents 帮助您计算该间隔。 这样的事情会触发下周日上午 10 点:let nextDate = Calendar.autoupdatingCurrent.nextDate(after: Date(), matching: DateComponents(hour: 10, weekday: 1), matchingPolicy: .nextTime); let interval = nextDate?.timeIntervalSinceNow; let trigger = UNTimeIntervalNotificationTrigger(timeInterval: interval, repeats: false) 是的,这就是我想要的。【参考方案2】:

看起来你想要这个(或其他日期)

if let weekDay = Calendar.current.dateComponents([.weekday], from: Date()).weekday 
   // do this what's needed

【讨论】:

最后一部分应该是 .weekday 而不是 .day? @Subha_26,你是对的。这将返回 nil,因为只请求了 .weekday 组件,但返回了 .date 组件。

以上是关于在 SwiftUI 中通过 Date() 读取星期几以获取本地通知的主要内容,如果未能解决你的问题,请参考以下文章

在 SwiftUI 中通过摇动手势(使用 UIKit)设置 EnvironmentObject 不会更新视图

SwiftUI如何摆脱NavigationView中通过NavigationLink链接的视图的不断初始化?

在php中通过空格读取字符串

如何在节点js中通过url读取文件

在 iOS 中通过 GCDAsyncsocket 读取 xml 文件

如何在 iOS 中通过语音来读取状态的全名?