我正在尝试学习一些Swift lang,我想知道如何将以下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
}
获取错误,例如:
无法将“ ViewController”类型的值转换为预期参数 键入“ AnyClass”(又名“ AnyObject.Type”)
答案 0 :(得分:1)
尝试以下代码,对我来说效果很好:
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
}
答案 1 :(得分:0)
尝试以下代码,我认为它可以正常工作:
if !tableView.dataSource?.isKind(of: self) {
self.tableView.dataSource = self
}
if !tableView.delegate?.isKind(of: self) {
self.tableView.delegate = self
}
答案 2 :(得分:0)
不确定这是否是一种好方法,但可能会对您有所帮助。
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")
}
}
答案 3 :(得分:0)
只需使用这两行而不是上面的行
self.tblSkillMaterials.delegate = self
self.tblSkillMaterials.dataSource = self