我正在使用Auth0,并且使用生物识别技术时,它们返回错误,但错误代码不正确。
它们具有一个返回以下内容的函数:
return callback(.touchFailed($0!), nil)
$ 0是一个LAError并且.touchFailed声明为
public enum CredentialsManagerError: Error {
case noCredentials
case noRefreshToken
case failedRefresh(Error)
case touchFailed(Error)
}
$ 0._code的值为-3
但是在回调函数中,错误。_code始终等于1
如何获取-3的实际值?
答案 0 :(得分:1)
问题是您正在查看错误的错误对象。有两个错误对象到达,外部错误(.touchFailed
)和内部错误包装在一起。内部错误是您要检查的错误。但是您没有检查它!
要了解我的意思,请以错误的方式和正确的方式查看此操作:
public enum CredentialsManagerError: Error {
case noCredentials
case noRefreshToken
case failedRefresh(Error)
case touchFailed(Error)
}
// let's make a `.touchFailed`
let innerError = NSError(domain: "yoho", code: -3, userInfo: nil)
let outerError = CredentialsManagerError.touchFailed(innerError)
// now let's examine them
// first, the wrong way
print(outerError._code) // 1, because it's the outer error
// now, the right way
if case let .touchFailed(what) = outerError {
print(what._code) // -3 <--!!!!
}