2017-10-06 96 views
0
func setPostcommentData(postmodel:model1,index: IndexPath) { 
    btnReply.tag = index.section 
    lblName.text = postmodel.getFullName() 
    btnReply.setTitle("Reply", for: UIControlState.normal) 
    btnCount.setTitle("0", for: UIControlState.normal) 
    TxtViewComment.text = postmodel.description 
    lblTime.text = ChatDates.commentTimeData(postmodel.createdDate).dateString 
} 

用法:如何为不同的类编写通用的泛型函数?

cellComment.setPostcommentData(postmodel: model1,index:indexPath) 
cellComment.setPostcommentData(postmodel: model2,index:indexPath) 
cellComment.setPostcommentData(postmodel: model3,index:indexPath) 

如何写泛型函数,使其接受不同的模型和数据集?

+0

请告诉你如何设置与其他模型数据。如果代码从模型到模型非常不同,我不建议将其用于通用。 – Sweeper

+0

每个模型从Basemodel继承。所有模型都是基础模型的子类,每个模型都有2-3种不同的属性,也可以从基础模型中获得。 @Sweeper – Amey

+0

如果函数接受'ParentModel',它也接受所有的'Childs' – JuicyFruit

回答

1

如果我有这个想法没错,这里是一个解决方案

protocol PostComment { 
    var value1: String {get} 
    var value2: String {get} 
    var value3: String {get} 
} 

class PostCommentParent: PostComment { 
    var value1: String { 
     return self.myValue1 
    } 

    var value2: String { 
     return self.myValue2 
    } 

    var value3: String { 
     return self.myValue3 
    } 

    var myValue1 = "1" 
    var myValue2 = "2" 
    var myValue3 = "3" 
} 

class PostCommentChild: PostCommentParent { 
    override var value3: String { 
     return self.myValue4 
    } 

    var myValue4 = "4" 
} 

let myParent = PostCommentParent() 
let myChild = PostCommentChild() 

func parse(comment: PostComment) { 
    print(comment.value3) 
} 

parse(comment: myChild) 
parse(comment: myParent) 
+0

我有3类全部继承BaseClass并需要提取和设置数据到所有类。所有3类有一些不同的变量彼此,我必须做一个通用的功能,接受模型,我通过并设置数据 – Amey

+0

@Amey抱歉,这是不可能理解,你是什么意思。 – JuicyFruit

相关问题