0
Я пытаюсь перевести следующий код в Swift 3. Я чувствую, что другие плакаты ответили на это, но я не могу понять это.Swift 3 Iterate Over Array of Classes
- (BOOL)allowTouchForSubview:(UIView *)subview {
NSArray *classes = @[[UITextField class], [UISearchBar class], [UITextView class]];
for (Class class in classes) {
if ([subview isKindOfClass:class]) {
return YES;
}
if ([subview.superview isKindOfClass:class]) {
return YES;
}
};
return NO;
}
Вот что я до сих пор:
func allowTouchForSubview(subview: UIView) -> Bool {
let allowedClasses: [AnyClass] = [UITextField.self, UISearchBar.self, UITextView.self]
for classType in allowedClasses {
if subview is classType {
return true
}
if let superview = subview.superview {
if superview is classType {
return true
}
}
}
return false
}
Она ошибки на обеих ссылках на classType
и говорит: "Использование необъявленной типа ClassType. Что здесь происходит?
Это, кажется, работает. Любая идея, почему «есть» не работает, или какая разница между is и isKindOf действительно делает? – Alex
Возможно, это связано с мостом. .kind (of: _), похоже, использует динамическую отправку для разрешения типа экземпляра. –