Match the data type of a object in Swift

前端 未结 2 1868
终归单人心
终归单人心 2021-01-18 17:17

How to match the data type of a object in Swift?

Like:

var xyz : Any
    xyz = 1;
    switch xyz
 {
    case let x where xyz as?AnyObject[]:
                 


        
2条回答
  •  小鲜肉
    小鲜肉 (楼主)
    2021-01-18 17:40

    change var xyz : AnyObject to var xyz : Any and add it will match to this case

    case let x as Int:
    

    from REPL

      1> var a : Any = 1
    a: Int = 
      2> switch a { case let x as Int: println("int"); default: println("default"); }
    int
    

    from The Swift Programming Language

    You can use the is and as operators in a switch statement’s cases to discover the specific type of a constant or variable that is known only to be of type Any or AnyObject. The example below iterates over the items in the things array and queries the type of each item with a switch statement. Several of the switch statement’s cases bind their matched value to a constant of the specified type to enable its value to be printed:

    for thing in things {
        switch thing {
        case 0 as Int:
            println("zero as an Int")
        case 0 as Double:
            println("zero as a Double")
        case let someInt as Int:
            println("an integer value of \(someInt)")
        case let someDouble as Double where someDouble > 0:
            println("a positive double value of \(someDouble)")
        case is Double:
            println("some other double value that I don't want to print")
        case let someString as String:
            println("a string value of \"\(someString)\"")
        case let (x, y) as (Double, Double):
            println("an (x, y) point at \(x), \(y)")
        case let movie as Movie:
            println("a movie called '\(movie.name)', dir. \(movie.director)")
        default:
            println("something else")
        }
    }
    
    // zero as an Int
    // zero as a Double
    // an integer value of 42
    // a positive double value of 3.14159
    // a string value of "hello"
    // an (x, y) point at 3.0, 5.0
    // a movie called 'Ghostbusters', dir. Ivan Reitman
    

    Note:

    var xyz : AnyObject = 1
    

    will give you NSNumber because Int is not object so it auto convert it to NSNumber which is object

提交回复
热议问题