2015-07-26 11 views
5

Staram się więc zbudować moją aplikację na iOS 9 i mam jeden problem. Wcześniej miałem przycisk, który pobierał ciąg znaków z etykiety i dodawał do łańcucha, który wymagałby osoby do lmgtfy i automatycznego wyszukiwania zawartości ciągu, ale teraz mam błąd w mapowaniu() . Oto kod, który pracował w iOS 8:Zamieniony ciąg w 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) 
     } 

Więc teraz błąd Dostaję mówi „«mapa»jest niedostępna. Nazywają«mapę()»metoda na sekwencji” Jakieś pomysły? Ponadto, nie jestem pewien, że link będzie działał, ponieważ ma być lmgtfy, ale nie mogłem przesłać tego pytania, chyba że zmieniłem adres URL na google.

+0

'originalString.generate() mapę()' 'zamiast mapy (originalString. generate()) 'jeśli poprawnie odczytuję błąd. –

Odpowiedz

13

Od Swift 2, nie jest już zgodny z SequenceType, dlatego nie można na nim zadzwonić pod numer generate. Zamiast tego należy użyć właściwości characters, aby uzyskać String.CharacterView, która jest zgodna z SequenceType.

Również ze Swift 2: map jest metodą w rozszerzeniu SequenceType. Dlatego to nazwać jak metody, zamiast wolnej funkcji:

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

Można również zrobić.

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

Jesteś dżentelmenem i uczonym. Wygląda na to, że naprawiłam mój problem! Dziękuję Ci! –

Powiązane problemy