我想在 swift 中比较对象的类型。 我有一个函数,它将 NSError 的对象作为参数。它应该返回一个自定义字符串。
看起来像这样:
static func getLocalizedErrorText(error: NSError) -> String{
switch error {
case is NoConnection: //class NoConnection: NSError
return "....."
...
}
但该功能未按预期运行。我认为主要问题是这个例子不起作用:
var dummy = MySubError() //class MySubError: MyBaseError
var dummy2: MyBaseError?
dummy2 = MySubError()
if dummy.dynamicType == MySubError.self {
//This will work
}
if dummy2.dynamicType == MySubError.self {
//This will not work
}
如何查看参数的类型?
最佳答案
您可以使用
检查类型if error is MySubError {
// do stuff
}
你也可以做一个可选的强制转换,如果类型匹配则成功,如果不匹配则返回 nil:
let subError = error as? MySubError
您还可以在 guard
谓词或 if let
语句中使用它:
if let subError = error as? MySubError {
// do stuff
}
或
guard let subError = error as? MySuberror else { return }
关于快速检查对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38616565/