2015-08-19 36 views
0

剛開始使用Swift,我創建了一個API服務類,但我不明白我如何才能完成這項工作!?!如何設置類寬變量?

import UIKit 

class Hello { 
    var className: String 

    init() { 
     self.className = "hello" 
    } 

    class func someFunc() { 
     println(self.className = "hello") // <= This doesn't work 
    }  
} 

據我瞭解,因爲我需要someFunc可訪問時,我稱呼它,我需要它有class func。例如,在我的視圖控制器中,當用戶點擊一個按鈕時,我可以做Hello.someFunc()

在此先感謝您的幫助。

+0

「靜態變量」或「靜態屬性」將是有用的搜索條件。 – user2864740

+0

在這種情況下,您應該將'className'更改爲'class var className =「hello」'或'static',並將其從'init' –

回答

2

如果你想允許子類可以重寫它:

class var className: String { return "Hello" } 

(注意class變量不能stored性能;他們必須computed屬性)

否則:

static var className = "Hello" 

staticfinal class相同)

您可以在Swift Programming Language書中閱讀關於類型屬性的更多信息。

您當前的println失敗,因爲您嘗試打印作業而不是字符串。我懷疑你的意思更多的東西一樣:

println("ClassName is \"\(className)\"") 

雖然 - 話說這一切 - 如果你只是想獲取類的名字,你應該使用:

println(self.dynamicType) 
1

您需要聲明的類變量是靜態的,你可以使用self在你的類級別的方法中訪問它。但是,如果你想從實例方法訪問它,你將不得不使用它的類名稱。

class Hello { 
    static var className: String = "" 


    init() { 
     Hello.className = "hello" 
    } 

    class func someFunc() { 
     println(self.className = "hello") 
    } 
} 

另請注意,swift期望類變量在創建時被初始化。