Обработка ошибок, Постоянный контейнер, Уведомления IOS - PullRequest
0 голосов
/ 03 мая 2018

Здравствуйте, я создаю свое первое приложение с использованием основных данных и у меня есть вопросы по настройке проекта. Я уже проследил за видео и пытаюсь создать приложение, подобное демонстрации, которую я смотрел.

Я вручную создал базовый стек данных и не уверен, как подойти к завершению persistentContainer.

Я искал, и я не уверен, как зарегистрировать ошибку, чтобы начать (Любое место, в частности, я мог бы посмотреть, чтобы выяснить это)? Во-вторых, я знаю, что мне нужно уведомить пользователя, если произошла ошибка, и он намеревался подойти к ситуации следующим образом:

В файле launchScreenViewController (я имею в виду первый контроллер представления, который появится на экране приложения, открывается.

  1. встраивание контроллера вида в контроллер навигации
  2. импорт инфраструктуры пользовательских уведомлений
  3. приведение класса launchScreenViewController в соответствие с UNUserNotificationCenterDelegate
  4. Добавление в класс VC свойства переменной для хранения статуса доступа к уведомлениям
  5. изнутри загрузился запрос на авторизацию, как только загрузилось представление приложения

Мой мыслительный процесс заключается в следующем: чтобы отправить предупреждение / уведомление о неработающем контейнере постоянного хранилища, мне нужно сначала получить доступ от пользователя для правильной отправки уведомлений ????

При настройке обработки ошибок следует ли создавать перечисление со всеми вариантами ошибок, которые могут возникнуть при попытке инициализировать контейнер постоянного хранения? В демонстрационной версии приложения мы назвали фатальную ошибку, но нам сказали, что не следует отправлять приложение таким образом.

Движусь ли я в правильном направлении с моим процессом «хотя» и настроен?

1 Ответ

0 голосов
/ 03 мая 2018

Более прямым способом обработки оповещения является UIAlertController и представление этого контроллера в случае неудачного ответа от CoreData.

Сначала создайте новый пустой файл swift и скопируйте в него следующий код

Я бы назвал это Оповещения + 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 для выдачи осмысленных сообщений об ошибках вашему пользователю, если ошибка действительно возникает.

...