![](/img/trans.png)
[英]Initialize property of type immutable dictionary in Swift init()
[英]Swift dictionary as property does not init
我有一个带有快速字典作为内部变量的类。
class OAuth: NSObject {
public var oauthParameters:[String:String]
public var SignatureSecret:String
public var accessToken:String? = nil
public var tokenSecret: String? = nil
public init(consumerKey:String, consumerSecret:String, accessToken:String?, tokensecret:String?){
self.oauthParameters = ["oauth_signature_method" : "SHA1"]
if accessToken{
self.oauthParameters.updateValue(accessToken!, forKey: "oauth_token")
}
if tokensecret{
self.SignatureSecret = "\(consumerSecret)&\(tokensecret!)"
}
else {
self.SignatureSecret = "\(consumerSecret)&"
}
}
}
我想在传递的参数的函数中分配字典的某些键,但是问题是变量oauthParameters
不保留作为文字传递的值:(
编辑:我猜字典没有初始化,因为LLDB将我打印出一个空字典(Xcode6B4),因此println确认一切正常。
看来您的初始化程序尚未完成。 由于某些原因,Playground并没有给我一个实际的错误,但是您需要在退出init()
之前给self.SignatureSecret
一个值:
public init(consumerKey:String, consumerSecret:String, accessToken:String?, tokensecret:String?)
{
self.oauthParameters = ["oauth_signature_method" : "SHA1"]
self.SignatureSecret = String()
}
解决之后,我可以在self.oauthParameters
看到值:
println(o.oauthParameters["oauth_signature_method"]!)
// prints "SHA1"
好像您需要初始化oauthParameters
尝试这样的事情:
public var oauthParameters: [String: String] = [String: String]()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.