Что такое хорошая практика «Обработка ошибок» для Swift 4? - PullRequest
0 голосов
/ 30 апреля 2018

Пожалуйста, кто-нибудь может подсказать мне хорошую практику, используя подходы «Обработка ошибок» с моим «рабочим» (Swift 4) кодом ниже ... (например: «Охрана», «Делать», «Поймать», «Бросить», 'if', 'else') ...

<code></p>

<p>//// Import ////
import UIKit
import CoreData</p>

<p>//// Custom Function ////
func insertCoreData(){
    if let coreData = (UIApplication.shared.delegate as? AppDelegate)?.persistentContainer.viewContext {
        let data = MyEntity(entity: MyEntity.entity(), insertInto: coreData)
        data.name = "Joe Blogs"
        data.country = "United Kingdom"
        try? coreData.save()
        print("Data Saved...")
    }
}</p>

<p>//// Output Function ///
insertCoreData() // Working and Gives </p>

<p>

Ответы [ 2 ]

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

Do, Try, Catch - хорошее начало, и это реализация по умолчанию, которую Xcode загружает для вас во время установки CoreData.

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

   /*
             Typical reasons for an error here include:
             * The parent directory does not exist, cannot be created, or disallows writing.
             * The persistent store is not accessible, due to permissions or data protection when the device is locked.
             * The device is out of space.
             * The store could not be migrated to the current model version.
             Check the error message to determine what the actual problem was.
             */

Есть хорошее видео о том, как сделать, попробуй поймать Шоном Алленом, показывающее пример того, как обработать ошибку. Проверьте это. youtube - делай, пробуй, лови

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

Вы столкнетесь с большими трудностями, если собираетесь использовать «попробывать» для обработки ошибок, особенно в такой критической ситуации, как сохранение ваших данных.

Получаете ли вы большую услугу и используете правильный do / try / catch (или re-throwing) в качестве стандартного способа обработки ошибок и используете только try? или попробуйте! в очень специфических ситуациях, когда вы знаете о последствиях. Это больше кода для написания, но как только у вас возникнет какая-то проблема, вы оцените дополнительные усилия.

do {
  try coreData.save()
} catch {
  print("Unable to save Managed Object Context")
  print("\(error), \(error.localizedDescription)")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...