2016-05-12 61 views
-3

我正在尝试创建一个共享实例,但它说不允许!swift中的共享实例问题

请参阅下面的图片,并给我的建议

enter image description here

+1

化妆'sharedInstance'静态 – sargeras

+0

你应该访问为'ModelManager.sharedInstance',但在此之前,作为其他有建议,你需要声明它为'static let sharedInstance' – GoodSp33d

回答

1

使用 static let sharedInstance = ModelManager() ,然后宣布你的初始化为private

private init() { 
    database = FMDatabase(init: SomeObject) 
} 
0

尝试这样做:

class SomeSingleton { 
    internal static let sharedInstance = SomeSingleton() 

    // Your singleton properties 
    var name = "" 

    private init() { } 
} 

然后你就可以访问它想:

SomeSingleton.sharedInstance.name = "John" 

let currentName = SomeSingleton.sharedInstance.name 
0

你不允许对类或静态函数访问实例属性。解决方法是将sharedInstance属性设置为静态属性。

static let sharedInstance = ModelManager() 
0

方法返回共享实例

class var sharedInstance :YourClass { 
     struct Singleton { 
      static let instance = YourClass() 
     } 

     return Singleton.instance 
    } 

访问共享的实例:

let sharedInstance = YourClass.sharedInstance() 

Check this link for more Singleton pattern in Swift

0

Singleton实例:使用结构与班组长的计算性能,而不是

class MyClass :NSObject{ 
    class var sharedInstance : MyClass { 
     struct Singleton { 
      static let instance = MyClass() 
     } 
     return Singleton.instance 
    } 
    // do other stuff here 
    func getCustomerLists()-> Any{ 
     // return 
    } 
} 

访问:

MyClass.sharedInstance. getCustomerLists() 
0

尝试编写甲波纹管: -

class var sharedInstance: YourClass { 
     struct Static { 
      static var onceToken: dispatch_once_t = 0 
      static var instance: YourClass? = nil 
     } 
     dispatch_once(&Static.onceToken) { 
     Static.instance = YourClass() 
     } 
     return Static.instance! 
}