2017-10-06 11 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

関連する問題