2015-07-26 3 views
0

Я не могу понять, как использовать TouchID с Xcode 7 с помощью Swift 2. Вот часть кода у меня возникают проблемы с:TouchID с Xcode 7 Swift 2

override func viewDidLoad() { 
    super.viewDidLoad() 

    let auth = LAContext() 
    var authError: NSError? 

    auth.canEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, error: &authError) 

    } 

Это должно работать в iOS 8, но не в Xcode 7 Beta для разработки iOS 9. Он дает эту ошибку компилятора: «Ошибка дополнительного аргумента» в вызове »и« & authError »выделен. Когда я удаляю дополнительный аргумент, я получаю ошибку компилятора: «Звонок может вызывать, но он не помечен« try », и ошибка не обрабатывается».

ответ

1

В Swift 2 Apple представила новый механизм обработки ошибок.
Если вы посмотрите на объявлении методы вы увидите следующее:

func canEvaluatePolicy(policy: LAPolicy) throws 

Он не имеет error параметра, но у него есть специальное слово throws, который говорит вам о потенциальной ошибке, которые могут быть брошенной.

Для обработки такого использования сообщение об ошибке do/try/catch выражение:

do { 
    try auth.canEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics) 
} catch { 
    // Handle error 
} 
1
do { 
    try auth.canEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics) 
} catch { 
    print("Error: \(error)") 
} 

Просто не забудьте обработать ошибку.

+0

Подобно этому ?: 'переопределение Func viewDidLoad() { super.viewDidLoad() пусть AUTH = LAContext() вар authError: NSError? сделать { auth.canEvaluatePolicy (LAPolicy.DeviceOwnerAuthenticationWithBiometrics) } {уловами печати ("Ошибка: \ (ошибка)") } }»Потому что я получаю ошибку компиляции:«Вызов может бросить, но не отмечено с «Try» « – RedEagle2000

+1

Вам нужно добавить попробовать перед линией. – Fogmeister

+0

@ RedEagle2000 Вам не нужен var authError: NSError? больше, так что просто удалите его, иначе ваш штраф. –