2017-02-28 2 views
-2

클래스 func을 사용하여 책 제목을 설정하려고했지만 작동하지 않습니다. 아래 코드를 참조하십시오.Swift의 클래스 매개 변수에 클래스 func 사용

import Foundation 

class Book: NSObject { 

    var bookTitle: String = "" 
    var bookPage: String = "" 

    override init(){ 
     print("Book object has been created") 
    } 



    class func setPageTitle(title: String) 
    { 
     bookTitle = title //I get the error here 
    } 

} 

Book 개체를 만들 때 pageTitle을 설정해야합니다.

누군가 나를 도울 수 있습니까?

+3

인스턴스가 없을 때 인스턴스 변수를 설정하려고합니다. 'bookTitle'을 정적으로 만듭니다. 너 정확히 뭘 하려구? 'setPageTitle'이 클래스 함수 인 이유는 무엇입니까? 'bookTitle'을 공개하지 않으시겠습니까? – JAL

+0

init에서 제목 세트를 원하면 왜 기본값을 제공합니까? – BallpointBen

답변

3

필수 속성/속성을 설정하는 가장 좋은 방법은 초기화 할 때입니다. 그래서 클래스 이런 식으로 코딩 시도 :

class Book: NSObject { 

    var bookTitle: String = "" 
    var bookPage: String = "" 

    init(title:String) { 
     bookTitle = title 
     print("Book object has been created") 
    } 

} 

여러 노트 : 당신이 당신의 setPageTitle 기능에 class를 선언하기 때문에

  1. 귀하의 오류입니다. 그건 말이 안돼.
  2. 초기화 후 을 포함하여 bookTitle을 설정하는 더 좋은 방법이 있습니다. 그러나 초기화 할 때 제목이 있는지 확인하고 싶었으므로 이동하십시오.
  3. 확실히 bookTitle 속성을 유지하는 더 좋은 방법이 있습니다. (대부분의 언어는 가격 변수를 보유하도록 가르쳐줍니다.) 저는 주로 클래스로 초기화하는 방법을 제공하려고합니다.
  4. 수퍼 클래스를 호출 할 필요가 없을 수도 있지만 Book 클래스도 NSObject로 만들지 않아도됩니다.
+0

'NSObject' 서브 클래스라면'super.init()'를 호출해야합니다. 또는, 당신이 말했듯이, 그것을'NSObject' 서브 클래스로 만들지 마십시오. – Rob

+0

@ Rob, 나는 동의한다. 내 대답은 질문에만 해당됩니다. 어떤 것을 서브 클래스 화한다면 특별한 이유가없는 한'super'를 호출해야합니다. – dfd

관련 문제