我在 Swift 中创建了一个如下所示的类,但它给出了错误:
'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
}
有什么问题吗?
您不能使用另一个属性的值来初始化实例属性,因为在所有实例属性都已初始化之前,self
不可用。
即使在初始化器中移动属性初始化也不起作用,因为 getKey
依赖于 webUrl
,所以 getKey
无法初始化直到它自己已初始化。
我看到 webUrl
是一个常量,所以将它设为静态属性可能是个好主意 - 类目前还不支持静态,所以最好的方法是使用私有(private)属性结构:
class ApiUrls {
private struct Static {
static let webUrl: String = "192.168.0.106:8888"
}
var getKey: String = Static.webUrl + "dev/sys/getkey"
}
此外,除非你有充分的理由,否则最好使用 swift 字符串而不是 NSString
。