2016-04-13 3 views
1

私はCouchbase-Liteポッドのインストールが必要なアプリケーションを作成しようとしています。私はクラスを初期化しようとしたとき、それはNS_UNAVAILABLEであり、代わりにファクトリクラスのメソッドを使用するように指示しました。 「ファクトリクラスメソッド」を使用する一般的な方法でこれをどうやって行うのですか?例えばSwiftのファクトリクラスメソッドとは何ですか?

言ってやるが、私はこれをしなかった:

class Polyline: CBLModel { 

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

    /* code here */ 

} 

答えて

0

ファクトリメソッドは、クラスのインスタンスを作成し、クラスの関数です。

は、すべてのモデルには、データベース内の文書との1対1の関連を持っていることを忘れないでください:あなたは完全にinitを迂回パターンに従ってください

Couchbase documentation saysCBLModelにはパブリックイニシャライザメソッドがないため、サブクラスに自分自身を実装しないでください。次のように新しいポリラインを作成する

が行われる必要があります:

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 
    } 
} 
関連する問題