ios - 将函数转换为扩展时遇到问题

标签 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
}

最佳答案

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"]
}

关于ios - 将函数转换为扩展时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27370215/

相关文章:

ios - 将 gestureRecognizer 添加到 tableView 单元格

objective-c - iOS5 中的 Youtube - 点击完成按钮

iphone - 使用 css 多列在 UIWebView 中对 html 进行分页时出错

ios - 将 iPhone 视频转换为 mp4 并上传到 PHP 服务器

objective-c - 如何提高滞后的 UIView 动画的性能

ios - 找不到 OneSignal Swift 安装文件

ios - 更改 UITableViewRowAction 标题文本的颜色

ios - SWIFT 中的 KVO 测试

ios - iPhone X 裁剪全屏的布局问题

ios - 在 iOS 中处理后台任务的正确方法是什么