无法在字典扩展中找到成员'init'

时间:2015-06-28 18:36:25

标签: ios swift dictionary extension-methods

我在this示例项目中找到了以下代码段。它需要一个[String: AnyObject]字典,转义空格字符并创建一个参数化字符串。

class func escapedParameters(parameters: [String : AnyObject]) -> String {
    var urlVars = [String]()

    for (key, value) in parameters {
        let stringValue = "\(value)"
        let escapedValue = stringValue.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())

        urlVars += [key + "=" + "\(escapedValue!)"]
    }
    return (!urlVars.isEmpty ? "?" : "") + join("&", urlVars)
}

原始代码是一个类函数。我想把它作为Dictionary类型的扩展方法。

extension Dictionary {

    func escapedParameters() -> String {
        var urlVars = [String]()

        for (key, value) in self {
            let stringValue = "\(value)"
            let escapedValue = stringValue.stringByAddingPercentEncodingWithAllowedCharacters(.URLQueryAllowedCharacterSet())

            urlVars += [key + "=" + "\(escapedValue!)"]
        }
        return (!urlVars.isEmpty ? "?" : "") + join("&", urlVars)
    }

}

但是我在此行urlVars += [key + "=" + "\(escapedValue!)"]收到以下错误。

无法找到成员'init'

我无法弄清楚为什么或如何纠正这个问题。当它是类函数时不会发生此问题。

1 个答案:

答案 0 :(得分:1)

试试这样:

urlVars.append("\(key)=\(escapedValue!)")