当我使用错误/不存在的Key / Keypath执行FetchRequest但是应用程序仍然崩溃时,我试图捕获错误。
这就是我创建NSPredicate的方式:
let pred = NSPredicate(format: "(\("WRONGKEY") = %@)", equalTo)
let request = NSFetchRequest()
request.predicate = pred
request.entity = MyEntityDescription
(WRONGKEY是Core Data架构中可能错误/不存在的参数)
这是导致错误的行:
var objects = managedContext?.executeFetchRequest(request, error: &error) as? [Model]
这是错误:
*由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'在实体中找不到keypath keyX< NSSQLEntity EN id = 2>' * 首先抛出调用堆栈:.....
所以我试图使用:
if let objects = managedContext?.executeFetchRequest(request, error: &error) as? [Model] {
println("okkkkkkkk")
} else {
println("error")
}
但不起作用。
我试过了:
if(error != nil) {
但也不起作用。
有没有办法捕获错误并避免应用程序崩溃?
答案 0 :(得分:2)
在Swift中,try-catch是不可用的。您可以切换回Objective-C,或使用library like this one添加功能。
也就是说,您可以通过跟踪哪些密钥有效来解决您的问题,而不是实施试一试方法。