小编hri*_*hri的帖子

是否可以使用 init 中的异步序列(异步等待)来观察通知中心?

我想观察.EKEventStoreChanged来自异步等待 API 的通知NotificationCenter,这意味着处理异步序列。

该代码有效,但我不确定在 中创建任务(从而观察更改)是否是init()一个好主意,或者是否有更好的选择。我有点担心这是对 the 的误用init(),因为现在,如果我没看错的话,init()必须运行 the 的整个生命周期,ObservableObject但 inits 的目的只是在对象创建期间运行?

class CalendarState: ObservableObject {
    // ...
    
    init() {
       // ...
        
        Task{
            await observeCalendar()
        }
    }

    func observeCalendar() async {
        for await _ in NotificationCenter.default.notifications(named: .EKEventStoreChanged) {
            await loadEvents(date: date)
    }
}
Run Code Online (Sandbox Code Playgroud)

欢迎任何帮助、提示或经验 - 谢谢:D

ios async-await swift swiftui

5
推荐指数
1
解决办法
2349
查看次数

标签 统计

async-await ×1

ios ×1

swift ×1

swiftui ×1