在Swift中的class参数上使用类func

时间:2017-02-28 23:02:31

标签: swift class

我正在尝试使用类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。

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:3)

设置任何必需属性/属性的最佳方法是初始化它。所以尝试用这种方式编写你的课程:

class Book: NSObject {

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

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

}

几点说明:

  1. 您的错误是因为您在class函数中声明了setPageTitle。这毫无意义。
  2. 有更好的(和其他)方法来设置bookTitle,包括初始化后的。但是你特别想确保在初始化时有一个标题,所以你去了。
  3. 肯定有更好的方法来维护bookTitle属性。 (大多数语言教你开始持有价格变量。)我主要试图给你一种方法来用类初始化它。
  4. 您可能不需要(或拥有)任何超类调用,但您也可能不需要将您的Book类设置为NSObject。