2016-04-04 13 views
1

Es gibt zwei Probleme, die zuerst kommt als eine gelbe Meldung (Warnung):Swift 3 var veraltet Fehler

var parameters are deprecated and will be removed in Swift3"<BR> If I fix it, the next line "searchText = ...." 

Die zweite mit einem roten Nachricht kommt (Fehler)

cannot assign to value: searchText is a let constant 

Hier der code:

Antwort

0

In swift 3.0 werden variable Parameter zu Funktionen entfernt. Dies liegt daran, dass die Designer der Sprache glauben, dass sie mit Variablen nicht eindeutig sein können. Sie können die Spiegelung verwenden, um dieses Problem zu beheben leicht wie so:

func filterContentForSearchText(searchText: String, scope: NSInteger) { 
    var searchText = searchText  
    searchText = searchText.lowercaseString; 

Hier weisen wir eine lokale Variable searchText der Wert der konstantsearchText Parameter zu sein. Aufgrund der Verschattung ist die lokale Variable, worauf verwiesen wird, wenn searchText verwendet wird.

+0

Danke für Ihre Hilfe, warum fügen Sie die dritte Zeile? –

+0

@Jade, in diesem Fall ist es nicht notwendig, da 'lowcaseString' eine berechnete Variable ist, die eine Zeichenfolge zurückgibt, so dass Sie das Ergebnis einfach wie gewünscht zuweisen können. Aber in einem allgemeineren Fall habe ich angenommen, dass der Grund dafür, dass Sie 'searchText' gemacht haben, in erster Linie liegt, weil Sie später irgendeine Form von Manipulation vornehmen wollen. –

+0

Danke Blake –

-1

Versuchen Sie folgendes:

func filterContentForSearchText(searchText: String, scope: NSInteger) {  
     var searchText = searchText.lowercaseString; 
+0

Funktioniert gut ... Danke –

+0

Wie Sie wünschen, Blake, entschuldige Manolo –