什么是Swift中的工厂类方法?

时间:2016-04-13 16:49:40

标签: swift initialization

我正在尝试构建一个需要我安装Couchbase-lite pod的应用程序。当我尝试初始化一个类时,它说它是NS_UNAVAILABLE,它告诉我使用工厂类方法。如何以一般方式使用'工厂类方法'?

比如说我这样做了:

class Polyline: CBLModel {

init() {        // the error starts here that says init is unavailable

    /* code here */

}

1 个答案:

答案 0 :(得分:0)

Factory方法是一个类函数,用于创建类的实例。

Couchbase documentation says您应该遵循完全绕过init的模式:

  

请记住,每个模型都与数据库中的文档具有一对一的关联。 CBLModel没有公共初始化方法,你不应该在子类中实现任何方法。

创建新的折线应按如下方式进行:

let poly = Polyline(forNewDocumentInDatabase: database)

如果您需要自定义初始化,还需要进入工厂方法:

class Polyline : CBLModel {
    @NSManaged var x : Int
    @NSManaged var y : Int

    class func newPolylineInDatabase(database: CBLDatabase, withX x: Int andY y:Int)
    -> Polyline {
        let res = Polyline(forNewDocumentInDatabase: database)
        res.x = x
        res.y = y
        return res
    }
}