2014-10-17 72 views
1

我在斯威夫特創建的類象下面,但它給錯誤:斯威夫特類「MyClass的」沒有一個成員名爲「My_Var」

'ApiUrls.Type' does not have a member named 'webUrl'

這裏是我的代碼:

import UIKit 

class ApiUrls { 

    let webUrl:NSString = "192.168.0.106:8888" 
    var getKey:NSString = webUrl + NSString("dev/sys/getkey") // here comes the error ApiUrls.Type' does not have a member named 'webUrl 

} 

它有什麼問題?

回答

5

不能初始化與另一個屬性的值的實例屬性,因爲self不可用,直到所有實例屬性已經初始化。

即使在初始化程序中移動屬性初始化也不起作用,因爲getKey依賴於webUrl,所以getKey在初始化之前無法初始化。

我看到webUrl是恆定的,所以也許這是一個好主意,使其靜態屬性 - 類不支持靜態自,所以最好的辦法是使用私有結構:

class ApiUrls { 
    private struct Static { 
     static let webUrl: String = "192.168.0.106:8888" 
    } 

    var getKey: String = Static.webUrl + "dev/sys/getkey" 

} 

此外,除非您有充分的理由,否則最好使用swift字符串而不是NSString

+0

感謝您的解釋 – 2014-10-17 11:36:29

+0

偉大的解決方案! – jestro 2015-05-28 20:54:36

0

據我所知,你不能在類定義中初始化類似的變量。

嘗試聲明的變量作爲

let webUrl:NSString = "192.168.0.106:8888" 
var getKey:NSString = "" 

,並在viewDidLoad中添加此

getKey = webUrl + NSString("dev/sys/getkey") 
+0

我沒有從UIViewController擴展我的類。因此我不能重寫didViewLoad方法謝謝BTW – 2014-10-17 11:37:41

+0

你可以在init()方法然後執行....相同效果 – 2014-10-17 11:41:49