错误处理、持久化容器、通知 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的主要内容,如果未能解决你的问题,请参考以下文章