2016-05-19 3 views
3

コアデータにシングルトンを使用しようとしています。以前、私は成功し、以下のデフォルトのスタック・メソッドを呼び出し、クラスCoreDataStack.h/.mを作成することによってそれを行うことができました、そして、それぞれの管理対象オブジェクトコンテキストは、Objective-Cで、かつ非常にうまく機能:Swiftでコアデータのデフォルトスタックのシングルトンを作成する

しかし
//RETURNS CoreDataStack 
+ (instancetype)defaultStack { 
    static CoreDataStack *defaultStack; 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     defaultStack = [[self alloc]init]; 
    }); 

    return defaultStack; 
} 

、私はSwiftプロジェクトを使用していますが、私はこれを最新のSwift構文に変換するのに苦労しています。これを作成するにはどうすればいいですか?これは、これまでの私の試みです:

class func defaultStack() -> Self { 
    var defaultStack: CoreDataStack 
    var onceToken: dispatch_once_t = 0 
    dispatch_once(&onceToken) { 
     defaultStack = self.init() 
    } 
    return defaultStack 
} 

と私のXcode生成されたエラー:

enter image description here

答えて

6

Krakendev'sシングルラインシングルトンのコードを使用し、シングルトンを作成するには:

class CoreDataStack { 

    // Here you declare all your properties 

    static let sharedInstance = User() 

    private init() { 
     // If you have something to do at the initialization stage 
     // you can add it here. It will only be called once. Guaranteed. 
    } 

    // Add the rest of your methods here 

} 

メソッドとプロパティをCoreDataStack.sharedInstance().propertyとと呼びます。 の代わりに、serviceのような短いものを使用することをおすすめします。

このソリューションは、一般的に、Core Dataのケースだけでなく、

関連する問題