在IOS9 swift2.0中使用Reduce()函数

时间:2015-10-13 06:21:20

标签: ios swift

我正在学习swift和Web服务。

当我尝试在IOS 9中编译以下代码时,我得到了

  

reduce不可用:调用序列

上的reduce()方法
public PartialViewResult UserImages(your paramaters here)
{
   your code here
}

所以,我明白我应该将reduce(args,[])转换为像args.reduce(initial:T,combine:(T,Self.Generator.Element)throws - > T)之类的东西。 有人可以帮我解释和转换它。

感谢。

2 个答案:

答案 0 :(得分:2)

  

JMX.newMBeanProxy(connection, objectName, interfaceClass)

您尝试将let parts: [String] = reduce(args, [])称为独立功能,但它实际上是reduce协议中的一种方法,SequenceType采用该方法。假设Array是您要应用args的数组,您可以将其称为:

reduce

其中foo = args.reduce(t, f) 是初始值,t是组合函数。

答案 1 :(得分:1)

正确的语法如下所示:

private class func queryWithArgs(args: [String: String]) -> String
{
    let parts: [String] = args.reduce([]) {
            result, pair in
            let
            key   = pair.0,
            value = pair.1,
            part  = "\(key)=\(value)"
            return result + [part]
    }
    return parts.joinWithSeparator("&")
}

我还更新了您的返回值,以避免NSArray演员。

您可能还希望看到Alamofire的ParameterEncoding.swift,它已经编写了更全面的参数编码方法。