SwiftUI |在所有视图中可用的模型或类中创建错误消息

Posted

技术标签:

【中文标题】SwiftUI |在所有视图中可用的模型或类中创建错误消息【英文标题】:SwiftUi | Create an error message in a model or class that is available in all views 【发布时间】:2021-03-31 08:25:21 【问题描述】:

我想创建一个可以在任何模型中实现的通用 api 实用程序。因此,无论视图如何,我目前都面临从模型输出错误消息的问题。需要错误消息来触发“无互联网”或“互联网连接不佳”通知。

一般来说,无论当前视图如何,在不同的类中生成错误消息以便通知用户失败的进程对我有很大帮助。

到目前为止,这是我的代码:

func execute(requestBody: [String: Any], withCompletion completion: @escaping (Data?, Int) -> Void) 
    
    if !CheckApiReachability().getIsApiReachable() 
        //trigger error message here
    

【问题讨论】:

欢迎来到 SO - 请使用 tour 并阅读 How to Ask 以改进、编辑和格式化您的问题。 SO 不是一个代码编写服务,这可以通过几种不同的方式实现。请提供您正在尝试的代码的Minimal Reproducible Example,我们可以帮助您解决问题。 一般来说,不推荐跟踪可达性。网络随时可能出现故障。仅仅因为在您发出网络请求之前它是可用的,并不意味着请求不会因网络问题而失败。您应该尝试请求并在发生错误时处理错误。您可以使用 Notification 在整个应用程序中“广播”事件,并且由于您已标记 SwiftUI,因此您可以使用 Combine 订阅该通知 【参考方案1】:

我现在已经使用通知中心来实现一个在我的内容视图中触发警报的事件。

发出/发布通知:

let nc = NotificationCenter.default 

self.nc.post(name: Notification.Name("InternetConnectionErrorAppeared"), object: nil)

接收/订阅/监听发出的事件并触发一些东西:

.onReceive(nc.publisher(for: Notification.Name("InternetConnectionErrorAppeared")))  output in
        print("-- Api call failed triggered status code event")

【讨论】:

以上是关于SwiftUI |在所有视图中可用的模型或类中创建错误消息的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - 将托管对象上下文传递给模型

无法在 SwiftUI 中创建简单的可选择标签视图

如何在使用自定义用户代理的 SwiftUI 中创建 Safari 视图?

如何在 SwiftUI 中创建一个列表视图,每个列表项都是一个 WKWebView(我的实现非常慢并且有问题)

有没有更好的方法在 SwiftUI 中创建多列(数据表)列表视图

在视图控制器中创建 Publishable 属性,将其传递给 SwiftUI 视图并监听视图控制器内部的更改?