您无法捕获不会引发错误的内容。您需要改进工作流程。
在调用之后返回数组并检查空数组:
func recherche(code: String) -> [Vendeurs] {
let context=getContext(backGround: false)
let fetchRequest:NSFetchRequest<Vendeurs> = Vendeurs.fetchRequest()
let predicate:NSPredicate = NSPredicate(format: "code == %@", code)
fetchRequest.predicate = predicate
do {
return try context.fetch(fetchRequest)
} catch {
print(error)
return [Vendeurs]()
}
}
let vendeurs = v.recherche(code: codeSecret)
if !vendeurs.isEmpty, let vid = Int(vendeurs[0].id) {
if vid > 0 && vid != idVendeur {
// blah blah
}
}
或者使recherche方法can throw
func recherche(code: String) -> [Vendeurs] throws {
let context=getContext(backGround: false)
let fetchRequest:NSFetchRequest<Vendeurs> = Vendeurs.fetchRequest()
let predicate:NSPredicate = NSPredicate(format: "code == %@", code)
fetchRequest.predicate = predicate
return try context.fetch(fetchRequest)
}
do {
let vendeurs = try v.recherche(code: codeSecret)
if !vendeurs.isEmpty, let vid = Int(vendeurs[0].id) {
if vid > 0 && vid != idVendeur {
// blah blah
}
}
} catch {
print(error)
}
或者——第三个选项——如果recherche应该只检查并返回一个id > 0
func recherche(code: String) -> Int {
let context=getContext(backGround: false)
let fetchRequest:NSFetchRequest<Vendeurs> = Vendeurs.fetchRequest()
let predicate:NSPredicate = NSPredicate(format: "code == %@", code)
fetchRequest.predicate = predicate
do {
let result = try context.fetch(fetchRequest)
guard !result.isEmpty, let id = Int(result[0].id) else { return 0 }
return id
} catch {
print(error)
return 0
}
}
let vid = v.recherche(code: codeSecret)
if vid > 0 && vid != idVendeur {
// blah blah
}
}