Словарь Swift как свойство не инициализируется

Вопрос:

У меня есть класс, который имеет быстрый словарь как внутреннюю переменную.

   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 не сохраняет значения, переданные как литералы 🙁

EDIT: Я догадался, что словарь не был инициализирован, потому что LLDB напечатал мне пустой словарь (Xcode6B4), потому что println подтверждает, что все в порядке.

Лучший ответ:

Похоже, что ваш инициализатор не завершен. По какой-то причине игровая площадка не дает мне реальной ошибки, но вам нужно дать self.SignatureSecret значение перед выходом из init():

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"

Ответ №1

Это похоже на то, что вам нужно инициализировать oauthParameters
попробуйте что-то вроде этого:

public var oauthParameters: [String: String] = [String: String]()

Оцените статью
TechArks.Ru
Добавить комментарий