Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 快速检查对象类型_Swift_Generics_Inheritance_Types - Fatal编程技术网

Swift 快速检查对象类型

Swift 快速检查对象类型,swift,generics,inheritance,types,Swift,Generics,Inheritance,Types,我想在swift中比较对象的类型。 我有一个函数,它以NSError的对象作为参数。它应该返回一个自定义字符串 看起来是这样的: static func getLocalizedErrorText(error: NSError) -> String{ switch error { case is NoConnection: //class NoConnection: NSError return "....." ... }

我想在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
}


您可以使用

if error is MySubError {
    // do stuff
} 
您还可以执行可选的强制转换,如果类型匹配,则该转换将成功;如果类型不匹配,则返回nil:

let subError = error as? MySubError
您也可以在
guard
谓词或
if let
语句中使用它:

if let subError = error as? MySubError {
    // do stuff
}