2015-09-27 89 views
-2

我目前面临以下问题,我正在使用该程序来学习Swift和OAuth:https://github.com/soundcloud/iOSOAuthDemo无法用类型为'(String,(String) - > Bool)'的参数列表调用'split'。 Swift 2

误差如下:

不能调用 '分裂' 与类型的参数列表 '(字符串,(字符串) - >布尔)'

与此片段:

private func parameterValue(name: String, fragment: String) -> String? { 
    let pairs = split(fragment) { $0 == "&" }.filter({ pair in pair.hasPrefix(name + "=") }) 
    if pairs.count > 0 { 
     return split(pairs[0]) { $0 == "=" }[1] 
    } else { 
     return nil 
    } 
} 

的指导原则是:

预期类型的​​参数列表 '(S,maxSplit:诠释,allowEmptySlices:BOOL,并将isSeparator:@noescape(S.Generator.Element) - > R)'

是否有任何人谁可以帮我删除这个错误,因为我是Swift和Swift 2.0的新手?

由于事先

+1

的[componentsSeparatedByString的斯威夫特版本(HTTP可能重复。 com/questions/25226940/swift-version-of-componentsseparatedbystring) – Moritz

+0

看一下,标题与你的问题无关,但接受的答案包含你所需要的。 – Moritz

+0

改变:'private func parameterValue(name:String,fragment:String) - > String? {pair of pair.hasPrefix(name +“=”)}) 如果pairs.count> 0 { return split(pairs [0 ]){$ 0 ==“=”} [1] } else { return nil } } to'let str = pairs let arr = split(str,{$ 0 ==“”},maxSplit:Int .max,allowEmptySlices:false)'似乎没有工作。我究竟做错了什么? – user4657

回答

0

这种重复的链接的主要思想是向您展示在斯威夫特2字符串不是一个集合了,你必须使用String的characters属性(split不是全局函数了)。您还必须将某些类型返回到String。例如:

private func parameterValue(name: String, fragment: String) -> String? { 
    let pairs = fragment.characters.split { $0 == "&" }.filter({ pair in String(pair).hasPrefix(name + "=") }) 
    if pairs.count > 0 { 
     let subseq = pairs[0].split { $0 == "=" }.map { String($0) } 
     return subseq[1] 
    } 
    return nil 
} 

parameterValue("mike", fragment: "&mike=test") // "test" 

注意,而不是你可以使用String的componentsSeparatedByString方法,使你的函数看起来有点简单://计算器:

private func parameterValue(name: String, fragment: String) -> String? { 
    let pairs = fragment.componentsSeparatedByString("&").filter { $0.hasPrefix(name + "=") } 
    if !pairs.isEmpty { 
     return pairs[0].componentsSeparatedByString("=")[1] 
    } 
    return nil 
} 

parameterValue("mike", fragment: "&mike=test") // "test" 
+0

太好了。这真的帮助了Eric D. – user4657

相关问题