2016-09-12 29 views
11

Tôi muốn làm điều gì đó như thế này:Làm thế nào để vượt qua một loại Swift như một đối số phương pháp?

func doSomething(a: AnyObject, myType: ????) 
{ 
    if let a = a as? myType 
    { 
     //… 
    } 
} 

Trong Objective-C lớp của lớp là Class

+0

bạn sẽ muốn sử dụng Generics với một phương pháp đầu vào của loại 'T.Type', sau đó bạn có thể cast cho 'T' - xem ví dụ [Q & A] (http: //stackoverflow.com/questions/37216240/generic-fu nction-taking-a-type-name-in-swift) – Hamish

Trả lời

30

Bạn phải sử dụng một hàm tổng quát nơi tham số chỉ được sử dụng cho loại thông tin để bạn bỏ nó vào T:

func doSomething<T>(a: AnyObject, myType: T.Type) { 
    if let a = a as? T { 
     //… 
    } 
} 

// usage 
doSomething("Hello World", myType: String.self) 
Các vấn đề liên quan