无法将功能转换为扩展

时间:2014-12-09 01:53:43

标签: ios xcode swift

我想将以下内容作为NSURL的扩展而不是函数,但是我遇到的错误是我无法使用变量。我该如何解决这个问题?

该函数获取url的查询字符串,并返回一个字典,其中包含查询中参数的键值对。

func getKeyVals(url:NSURL) -> Dictionary<String, String>{
    var results = [String:String]()
    var keyValues = url.query?.componentsSeparatedByString("&")
    if keyValues?.count > 0 {
        for pair in keyValues! {
            let kv = pair.componentsSeparatedByString("=")
            if kv.count > 1 {
                results.updateValue(kv[1], forKey: kv[0])
            }
        }

    }
    return results
}

1 个答案:

答案 0 :(得分:2)

extension NSURL {
    func getKeyVals() -> Dictionary<String, String> {
        var results = [String:String]()
        let keyValues = query?.componentsSeparatedByString("&")
        if keyValues?.count > 0 {
            for pair in keyValues! {
                let kv = pair.componentsSeparatedByString("=")
                if kv.count > 1 {
                    results.updateValue(kv[1], forKey: kv[0])
                }
            }

        }
        return results
    }
}

if let checkedUrl = NSURL(string: "http://www.domain.com/index.php?device=iPad&capacity=128GB&color=white"){
    let keyVals = checkedUrl.getKeyVals()   // ["color": "white", "device": "iPad", "capacity": "128GB"]
}