У меня очень простой класс, который выбирает контакты. Теперь мне нужно создать эту функцию с бросками.
Так как store.requestAccess
не является функцией выброса, поэтому я не могу выбросить ошибку из этого смещения. Итак, я получаю эту ошибку
Неправильное преобразование из функции выброса типа '(_, _) throws -> ()' в тип функции без броска '(Bool, Error?) -> Void '
class ContactFetcher {
enum ContactError:Error {
case permissionError
case fetchError
}
func fetchContacts(completion:@escaping(([CNContact]) -> ())) throws {
let keys = [CNContactPhoneNumbersKey] as [CNKeyDescriptor]
let fetchRequest = CNContactFetchRequest(keysToFetch: keys)
let store = CNContactStore()
var results:[CNContact] = []
store.requestAccess(for: .contacts) { (grant, error) in
if grant{
do {
try store.enumerateContacts(with: fetchRequest, usingBlock: { (contact, stop) -> Void in
results.append(contact)
})
} catch {
// throw ContactError.fetchError
}
completion(results)
} else {
throw ContactError.permissionError
print("Error \(error)")
}
}
}
}
Есть ли способ это исправить?
Заранее спасибо