Я пытаюсь понять язык Swift, и мне интересно, как преобразовать следующий Objective-C в Swift:
- (void)refreshDataOnChange {
if (![tblSkillMaterials.delegate isKindOfClass:[self class]]) {
tblSkillMaterials.delegate = self;
}
if (![tblSkillMaterials.dataSource isKindOfClass:[self class]]) {
tblSkillMaterials.dataSource = self;
}
//Other Code Logic Here
}
В частности, мне нужно знать, как использовать isKindOfClass в новом синтаксисе.
func refreshDataOnChange() {
if tblSkillMaterials.delegate?.isKind(of: ?) {
tblSkillMaterials.delegate = self
}
if tblSkillMaterials.dataSource?.isKind(of: ?) {
tblSkillMaterials.dataSource = self
}
//Other Code Logic Here
}
Ошибка при загрузке:
Cannot convert value of type 'ViewController' to expected argument type 'AnyClass' (aka 'AnyObject.Type')
Какова цель этого кода? Могут быть лучшие собственные решения Swift, например протоколы с ограничениями типа





Попробуйте следующий код, я думаю, он работает нормально:
if !tableView.dataSource?.isKind(of: self) {
self.tableView.dataSource = self
}
if !tableView.delegate?.isKind(of: self) {
self.tableView.delegate = self
}
Попробуйте следующий код, у меня он отлично работает:
func refreshDataOnChange() {
if tblSkillMaterials.delegate?.isKind(of: <your view controller name>.self) {
tblSkillMaterials.delegate = self
}
if tblSkillMaterials.dataSource?.isKind(of: <your view controller name>.self) {
tblSkillMaterials.dataSource = self
}
//Other Code Logic Here
}
Не уверен, что это хороший способ или нет, но может вам помочь.
func checkDelegate()
{
if tblVIew.delegate != nil
{
if (tblVIew.delegate?.isEqual(self))!
{
print("self is the delegate")
}
else{
print(" else case")
}
}
else{
print(" delegate is nil")
}
}
Просто используйте эти две строки вместо строк выше
self.tblSkillMaterials.delegate = self
self.tblSkillMaterials.dataSource = self
Спасибо за ответ, но - я хочу знать, почему я не проверяю, какой контроллер назначает объект делегата UITableView
Думаю, эта ссылка поможет, пожалуйста, проверьте еще раз stackoverflow.com/questions/34565570/…
Извините, я не знаю, но нет дубликата использования isKindOfClass с Swift - я хочу проверить, какой контроллер назначает объект делегата UITableView