2015-07-26 4 views
5

Also versuche ich meine App für iOS 9 zu bauen und bin in ein Problem. Vorher hatte ich eine Schaltfläche, die die Zeichenfolge von einem Label nahm und sie zu einer Zeichenfolge hinzufügte, die eine Person dazu bringen würde, den Inhalt der Zeichenfolge zu suchen und automatisch zu suchen, aber jetzt liefere ich einen Fehler mit map(). . Hier ist der Code, der in iOS arbeitete 8:Ersetzt String in Swift 2

 @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) 
     } 

So, jetzt die Fehler ich sagt immer, „‚Karte‘ist nicht verfügbar. Rufen Sie die‚map()‘Methode auf der Sequenz“ Irgendwelche Ideen? Ich bin auch nicht der Meinung, dass der Link funktionieren wird, weil er eigentlich lmgtfy sein soll, aber ich konnte diese Frage nicht einreichen, wenn ich die URL nicht auf google änderte.

+0

'originalString.generate() Karte()' statt 'Karte (originalString. generate()) 'wenn ich den Fehler richtig lese. –

Antwort

13

Ab Swift 2, String entspricht nicht mehr SequenceType, daher können Sie nicht generate darauf anrufen. Stattdessen müssen Sie die Eigenschaft characters verwenden, um eine String.CharacterView zu erhalten, die SequenceType entspricht.

Auch mit Swift 2: map ist eine Methode in einer Erweiterung von SequenceType. Daher nennen Sie es wie ein Verfahren, anstelle einer freien Funktion:

let str = "ab cd ef gh" 
let replaced = String(str.characters.map { $0 == " " ? "+" : $0 }) 
// "ab+cd+ef+gh" 

könnten Sie auch tun.

let replaced = str.stringByReplacingOccurrencesOfString(" ", withString: "+") 
// "ab+cd+ef+gh" 
+0

Sie sind ein Gentleman und ein Gelehrter. Sieht aus wie das mein Problem behoben hat! Vielen Dank! –