diff --git a/Delta/Database/Cheats/CheatBase.swift b/Delta/Database/Cheats/CheatBase.swift index b3278b6..f2785be 100644 --- a/Delta/Database/Cheats/CheatBase.swift +++ b/Delta/Database/Cheats/CheatBase.swift @@ -80,6 +80,8 @@ class CheatBase: GamesDatabase override init() throws { let fileURL = DatabaseManager.cheatBaseURL + guard FileManager.default.fileExists(atPath: fileURL.path) else { throw GamesDatabase.Error.doesNotExist } + self.connection = try Connection(fileURL.path) try super.init() diff --git a/Delta/Database/Cheats/CheatBaseView.swift b/Delta/Database/Cheats/CheatBaseView.swift index 3ff60e2..7a7ed4c 100644 --- a/Delta/Database/Cheats/CheatBaseView.swift +++ b/Delta/Database/Cheats/CheatBaseView.swift @@ -8,6 +8,8 @@ import SwiftUI +import enum SQLite.Result + @available(iOS 14, *) extension CheatBaseView { @@ -212,8 +214,17 @@ struct CheatBaseView: View Text("Unable to Load Cheats") .font(.title) - Text(error.localizedDescription) - .font(.callout) + if let error = error as? SQLite.Result + { + // SQLite.Result implements CustomStringConvertible.description, but not localizedDescription. + Text(String(describing: error)) + .font(.callout) + } + else + { + Text(error.localizedDescription) + .font(.callout) + } } else if let filteredCheats = viewModel.filteredCheats, filteredCheats.isEmpty { diff --git a/Delta/Database/OpenVGDB/GamesDatabase.swift b/Delta/Database/OpenVGDB/GamesDatabase.swift index 28c4a13..1482ba4 100644 --- a/Delta/Database/OpenVGDB/GamesDatabase.swift +++ b/Delta/Database/OpenVGDB/GamesDatabase.swift @@ -57,9 +57,17 @@ extension VirtualTable extension GamesDatabase { - enum Error: Swift.Error + enum Error: LocalizedError { case doesNotExist + + var errorDescription: String? { + switch self + { + case .doesNotExist: + return NSLocalizedString("The SQLite database could not be found.", comment: "") + } + } } }