2015-08-31 39 views
2

我目前正在使用Shopify应用程序,它使用mobile buy sdk,我试图在Swift中使用Singleton保存购物车。我有一个Singleton类的设置是这样的:Swift Singleton

class Singleton { 

    static let sharedInstance = Singleton() 

    init() { 
    var cart = BUYCart() 
    println(cart) 
    } 
} 

当它初始化时,它会在控制台中打印BUYCart。问题是我试图访问保存在车控制器,像这样:

println(Singleton.sharedInstance.cart.lineItems) 

我得到以下错误:

Singleton does not have member named 'cart' 

回答

9

你应该在声明实例级别的变量。在你的代码中它在构造函数中声明,所以你只能在构造函数中访问它。不像你在代码中那样从课外。

class Singleton { 

    static let sharedInstance = Singleton() 
    var cart = BUYCart() 

    init() { 
    println(cart) 
    } 
} 
8

这不一定是对您的问题的直接回应,所以downvote away。但是,如果你想这是一个单身,使init方法private,这样就可以真的,真的,只有创建它的一个实例:

class Singleton { 

    static let sharedInstance = Singleton() 
    var cart = BUYCart() 

    private init() { 
     println(cart) 
    } 
} 
+0

好一点,我给予好评你会收到。 (理论上,它仍然可以在同一个文件中的任何地方实例化,这比在整个模块中要好得多) – Kametrixom