Có biến loại AnyClass, có thể biết loại đó là phần mở rộng hay triển khai loại khác không?Kiểm tra xem biến AnyClass có phải là phần mở rộng hoặc thực hiện một lớp
Ví dụ:
var aClass: AnyClass = UIButton.self
// assuming a fictional operator "isOfType"
// Both UIButton and UILabel are subclasses of UIView
aClass isOfType UIButton // true
aClass isOfType UIView // true
aClass isOfType UILabel // false
Một cách tốt để làm điều này đang tạo ra một thể hiện, nhưng tạo ra Ví dụ như có thể không luôn luôn mong muốn:
var aClass: AnyClass = UIButton.self
let buttonClass = aClass as? UIButton.Type
var aButton: AnyObject = buttonClass!()
aButton is UIButton // true
aButton is UIView // true
aButton is UILabel // false
Có phương tiện khác để kiểm tra xem một AnyClass có chứa loại mở rộng loại khác?
Gọn gàng, điều này chắc chắn hữu ích. Tôi vẫn tự hỏi nếu có một cách để làm điều này mà không có các phương pháp NSObject, hoặc sử dụng trực tiếp cú pháp loại nhanh chóng. – LopSae
@LopSae Có vẻ rằng 'isSubclassOfClass' hoạt động cho các lớp Swift thuần túy (xem cập nhật của tôi). – hennes
@LopSae Tôi nghĩ rằng việc sử dụng 'is' cùng với thuộc tính' Type' có lẽ là cách * nhanh nhất * để làm điều này (xem bản cập nhật thứ hai của tôi). – hennes