错误处理、持久化容器、通知 IOS

Posted

技术标签:

【中文标题】错误处理、持久化容器、通知 IOS【英文标题】:Error handling, Persistent Container, Notifications IOS 【发布时间】:2018-05-03 18:18:30 【问题描述】:

您好,我正在使用核心数据构建我的第一个应用程序并且有项目设置问题,我已经观看了一个视频,并正在尝试构建一个与我观看的演示类似的应用程序。

我手动创建了核心数据堆栈,但不确定如何完成persistentContainer。

我已经搜索过,但我不确定如何记录错误以开始(任何地方特别是我可以寻找解决这个问题的地方)?其次,我知道如果发生错误,我需要通知用户,并且正在考虑按如下方式处理这种情况:

在launchScreenViewController 文件中(我指的是应用程序打开时将出现在屏幕上的第一个视图控制器。

    将视图控制器嵌入到导航控制器中 导入 UserNotifications 框架 使 launchScreenViewController 类符合 UNUserNotificationCenterDelegate 在 VC 类中添加一个变量存储属性来保存通知的访问状态 一旦加载应用视图,内部视图就会加载请求授权

我的想法是这样的,为了发送关于持久存储容器不工作的警报/通知,我需要首先从用户那里获得访问权限以发送正确的通知????

在设置错误处理时,我是否应该创建一个枚举,其中包含尝试初始化持久存储容器时可能出现的所有错误选项?在应用演示中,我们调用了致命错误,但被告知不要以这种方式发布应用。

我的流程和设置是否朝着正确的方向前进?

【问题讨论】:

【参考方案1】:

处理警报的更直接方法是使用 UIAlertController 并在来自 CoreData 的响应失败时向该控制器显示。

先新建一个空的swift文件,把下面的代码复制进去

我将其命名为 Alerts+UIViewController

extionsion UIViewController 

    func doFailedAlert(_ message: String, _ error: NSError)  
         DispatchQueue.main.async  
             let alert = UIAlertController(title: message, message: "\(error.localizedDescription)", preferredStyle: .alert) 
             let action = UIAlertAction(title: "Oh No!", style: .destructive, handler: nil) 
             alert.addAction(action) 
             self.present(alert, animated: true) 
          
     


然后,您可以从应用程序中的任何 UIViewController(甚至嵌套在闭包中)调用 doFailedAlert("someMessage", someError),它会显示一条警报,其中包含您想要的消息和错误描述。

当您准备好部署时,您可能希望以不同的方式处理错误消息。用户不会关心这些细节,但作为开发人员的你会。拥有一个包含所有可能错误的 Enum 对您非常有用,因此我建议您这样做。如果确实发生错误,您甚至可以使用该 Enum 向您的用户提供有意义的错误消息。

【讨论】:

以上是关于错误处理、持久化容器、通知 IOS的主要内容,如果未能解决你的问题,请参考以下文章

ios 13 推送通知设备令牌

处理容器反应错误的是

如何在 WordPress 中为致命错误处理程序 (WSoD) 设置通知电子邮件

RxJava之错误处理

RxJava 错误处理

离子中的 apns 错误设备令牌