2017-10-06 8 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 Class All Inherit BaseClass가 있고 모든 클래스에 데이터를 추출하고 설정해야합니다. 모든 3 가지 클래스가 서로 다른 변수를 가지며 모델을 받아들이고 데이터를 설정하는 일반 함수를 만들어야합니다. – Amey

+0

@Amey 죄송합니다. 이해하기 란 불가능합니다. 무엇을 의미합니까? – JuicyFruit