Swift 유형 선택(Type Casting)

Swift 개발 과정에서 우리는 다음과 같은 상황에 직면하게 될 것이다. 어떤 실례가 그 종류로 생성되었는지 판단하는 것이다.하위 클래스를 상위 클래스로 변환하기;변수를 모든 종류(값 대상, 인용 대상, 방법)로 만들 수 있도록...
Swift에서도 유형 판단 is, 유형 변환 as, 속성 선언 AnyObject 및 Any를 사용해야 하는 키워드를 처리할 수 있습니다.
네 가지 키워드의 사용을 설명하기 전에 클래스 MediaItem, Movie 및 Song을 구성합니다.
class MediaItem {

}

class Movie: MediaItem {

}

class Song: MediaItem {

}

여기서 Movie와 Song은 모두 MediaItem을 상속합니다. 

Is


is는 주로 유형 판단에 사용된다. 예를 들어 우리가 어떤 실례가 그 클래스의 하위 클래스이거나 그 클래스가 생성된 것을 판단한다.
let array = [Song(), Movie()]

// isfor item in array {
    if item is Movie {
        print("Movie ")
    } else if item is Song {
        print("Song ")
    }
}

 

As


as는 주로 형식 변환에 사용되며, 한 클래스를 다른 클래스로 변환할 수 있습니다.as 뒤에'?'또는!
  • as?:사전 변환, 변환 실패 시 nil로 돌아갑니다
  • as!:강제 변환, 변환에 실패할 때 프로그램이 붕괴됩니다
  • for item in array {
        if let movie = item as? Movie {
            print(" Movie: '\(movie)'")
        } else if let song = item as? Song {
            print(" Song: '\(song)'")
        }
        //  , , 
        let movie = item as! Movie
    }

     

    AnyObject


    AnyObject를 사용하여 선언하는 상수(변수)는 값 객체 또는 참조 객체일 수 있습니다.
    let someObjects: [AnyObject] = [Movie(), 1, "33"]

     

    Any


    Any와 AnyObject는 같은 특성을 가지고 있지만 Any는 방법과 클립을 대표할 수 있다.
    var things = [Any]()
    things.append(0) //  
    things.append(Movie()) //  
    things.append({ (name: String) -> String in "Hello, \(name)" }) //  

     

    기타


    참고 자료


    The Swift Programming Language (Swift 2.1)

    문서 수정 레코드


    타임
    묘사
    2015-11-1
    The Swift Programming Language(Swift 2.1)의 Type Casting 요약 정보
     
    저작권 소유:http://blog.csdn.net/y550918116j

    좋은 웹페이지 즐겨찾기