所以我正在尝试为iOS 9构建我的应用程序并遇到一个问题.以前,我有一个按钮,它会从标签中取出字符串并将其添加到一个字符串中,该字符串会使一个人lmgtfy并自动搜索字符串的内容,但现在我遇到了map()的错误.以下是在iOS 8中运行的代码:
@IBAction func googleButton() { let replaced = String(map(originalString.generate()) { $0 == " " ? "+" : $0 }) if let url = NSURL(string: "http://google.com/?q=\(replaced)") { UIApplication.sharedApplication().openURL(url) } print(replaced) }
所以现在我得到的错误是,“’map’不可用:在序列上调用’map()’方法.”有任何想法吗?此外,我不肯定链接将起作用,因为它应该是lmgtfy但我无法提交此问题,除非我将URL更改为谷歌.
解决方法
从Swift 2开始,String不再符合
SequenceType
,因此您无法在其上调用generate.相反,您需要使用characters属性来获取符合SequenceType的
String.CharacterView
.
同样使用Swift 2:map是SequenceType扩展中的一种方法.因此,您将其称为方法,而不是自由函数:
let str = "ab cd ef gh" let replaced = String(str.characters.map { $0 == " " ? "+" : $0 }) // "ab+cd+ef+gh"
你也可以这样做:
let replaced = str.stringByReplacingOccurrencesOfString(" ",withString: "+") // "ab+cd+ef+gh"