func fetchEmployees() -> [EmployeeMO] { let context = persistentContainer.viewContext let employeesFetch = NSFetchRequest<NSFetchRequestResult>(entityName: "Employee") do { let fetchedEmployees = try context.fetch(employeesFetch) as! [EmployeeMO] return fetchedEmployees } catch { fatalError("Failed to fetch employees: \(error)") } return [] }
return fetchedEmployees
か fatalError("Failed to fetch employees: \(error)")
で必ず終了するからです。try context.fetch(employeesFetch)
に try
がマークされているので、ここでエラーが発生したときに catch
節に入るということがわかります。なので、エラーが発生しなければ return fetchedEmployees
、発生したら fatalError("Failed to fetch employees: \(error)")
で fetchEmployees()
は終了します。return []
が実行されることはなく、コンパイラが will never be executed (決して実行されることがない)と警告しているのです。try
や as!
の意味は? fatalError
で何が起こる? fatalError
の戻り値の型の Never
とは?どういうケースで will never be executed の警告が出るか)NSPredicate
(これ自体は Core Data とは独立に Foundation に存在します)@Environment
などが用いられているのですが、おそらく何かのコードをみようみまねで書いたのだと思いますが、それらについてどう書くべきかを理解するには SwiftUI について学ぶ必要がありますし、そのためには Property Wrapper や Combine の理解も必要になります。