当应用程序加载时出现此错误时我遇到崩溃:无法为 UIMainStoryboardFile 'Main' 实例化默认 View Controller - 也许未设置指定的入口点?
所以,在 Main.Storyboard
我不检查 是初始 View Controller
因为正如您在我的代码中看到的那样,我在我的 AppDelegate
中执行此操作,但是当应用运行它崩溃并在我的 assertionFailure()
捕获时停止。谁能帮我解决这个问题?谢谢您的帮助。此外,我已输入 LocationViewController
作为我的 Storyboard ID,但未选中 Use storyboard id
。 (我什至检查过它,仍然是同样的错误)。
这是我的代码:
class AppDelegate: UIResponder, UIApplicationDelegate {
let window = UIWindow()
let locationService = LocationService()
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let service = MoyaProvider<YelpService.BusinessesProvider>()
let jsonDecoder = JSONDecoder()
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
jsonDecoder.keyDecodingStrategy = .convertFromSnakeCase
service.request(.search(lat: 34.148000, long: -118.361443)) { (result) in
switch result {
case .success(let response):
let root = try? self.jsonDecoder.decode(Root.self, from: response.data)
print(root)
case .failure(let error):
print("Error: \(error)")
}
}
let locationViewController = storyboard.instantiateViewController(withIdentifier: "LocationViewController") as? LocationViewController
locationViewController?.locationService = locationService
window.rootViewController = locationViewController
window.makeKeyAndVisible()
return true
}
}
最佳答案
您的应用程序正在崩溃,因为您的 locationService.status 处于默认状态,因此它始终达到 assertionFailure()。
当控制流预计不会到达调用时,使用此函数停止程序,而不影响传送代码的性能——例如,在开关的默认情况下,您知道其中一个其他情况必须满足 https://developer.apple.com/documentation/swift/1539616-assertionfailure
1) 找到修复 locationService.status 的方法
2) 绕过switch语句
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
jsonDecoder.keyDecodingStrategy = .convertFromSnakeCase
service.request(.search(lat: 34.148000, long: -118.361443)) { (result) in
switch result {
case .success(let response):
let root = try? self.jsonDecoder.decode(Root.self, from: response.data)
print(root) <-- Console is printing nil here because your jsonDecoder failed.
case .failure(let error):
print("Error: \(error)")
}
}
let locationViewController = storyboard.instantiateViewController(withIdentifier: "LocationViewController") as? LocationViewController
locationViewController?.locationService = locationService
window.rootViewController = locationViewController
window.makeKeyAndVisible()
return true
}
关于ios - 在 Swift 4 中加载应用程序时崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54047090/