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

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

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

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

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

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

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

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

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

【问题讨论】:

    标签: ios swift error-handling notifications persistent


    【解决方案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 向您的用户提供有意义的错误消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多