我正在学习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)之类的东西。 有人可以帮我解释和转换它。
感谢。
答案 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,它已经编写了更全面的参数编码方法。