2014-12-10 2 views
1

에 속성을 변경할 수 없습니다. 엄격하게 아무것도하지 않는내가보기 컨트롤러 클래스가 부모 클래스

class className: PostImageController { 

func changeText() { 
     super.textToChange = "New text" 
} 

} 

:

나는 뷰 컨트롤러에서 호출되는 클래스 파일이 시도.

이 대신 여전히 클래스 파일의 이전 exemple의 "읽기 전용 속성 'textToChange'로 변경 가능한 속성을 재정의 할 수 없습니다"심지어 때문에 오류 메시지와 함께 구축 할 수

override var textToChange: String { 
    return "Modified !!" 
} 

.

목표는 하위 클래스 파일에서 속성을 변경할 수 있도록하는 것입니다. 왜 단서가 있다면 조언 해주십시오. 여기

func changeText() { 
    self.textToChange = "New text" 
} 

대신 슈퍼

답변

2

사용 자체가 또 다른 해결책은 초기화 같은 하위 클래스의 방법에 textTochange를 초기화하는 것입니다 :

init() { 
    super.init() 
    self.textToChange = "Modified !!" 
} 

그러나 여기 진짜 문제 것은 그에게 인쇄입니다 슈퍼 클래스의 textToChange. 이것을 시도하십시오 :

@IBAction func temp(sender: AnyObject) { 
     var subclassObject = className().changeText() 
     println(subclassObject.textToChange) 
} 
+0

감사합니다.하지만 내 기능과 마찬가지로 텍스트가 변경되지 않고 println이 "원본"으로 표시됩니다. 귀하의 두 번째 제안에 관해서는 "저장된 속성으로 덮어 쓸 수 없기 때문에"빌드 할 수 없습니다. –

+0

예, 맞습니다. 내 대답을 업데이트 할 것입니다. – abarbier

관련 문제