2014-07-08 3 views
5

Sto cercando di capire se una variabile fa parte di un array.Verifica se l'oggetto fa parte dell'elenco

Questo è il codice:

let Name = "Tim" 
var i = "" 
let Friends = ["Jim", "Tim", "Anna", "Emma"] 
if Name in Friends { 
    i = "Is a Friend" 
} else { 
    i = "Not a Friend" 
} 

Questo non funziona a Swift, che cosa è l'operatore corretto?

+1

usa 'se contiene (Amici, Nome)'. Giuro che questo è un dupe ... vedi http://stackoverflow.com/questions/24037699/swift-arrays-and-contains-crashes-when-var-is-string-but-when-i-cast-it- to-st – Jack

+0

Ha funzionato bene! Grazie!! – Enthuziast

risposta

3

Utilizzare il metodo find, che restituisce (facoltativo con) l'indice dell'elemento o contains, che restituisce appena un BOOL. Inoltre, avviare i nomi delle variabili locali con lettere minuscole. Il maiuscolo deve essere solo classe/struct/protocollo/ecc. nomi.

let name = "Tim" 
var i = "" 
let friends = ["Jim", "Tim", "Anna", "Emma"] 
if find(friends, name) { 
    i = "Is a Friend" 
} else { 
    i = "Not a Friend" 
} 
+0

Grazie mille! Ha funzionato bene! – Enthuziast

1

Oltre a Jack Wu e messaggi di Kevin, si può anche provare modo bruta di iterazione attraverso matrice, provare seguenti approcci:

let Name = "Tim" 
let Friends = ["Jim", "Tim", "Anna", "Emma"] 

// iterate through Friends 
for f1 in Friends { 
    if f1 == Name { 
     println(f1) 
     break 
    } 
} 

// enumerate Friends 
for (i, f2) in enumerate(Friends) { 
    if f2 == Name { 
     println("Item \(i + 1): \(f2)") 
     break 
    } 
} 
1

Il modo Swift 3 per farlo:

let name = "Tim" 
let friends = ["Jim", "Tim", "Anna", "Emma"] 
var i = "" 
if friends.contains(name) { 
    i = "Is a friend" 
} else { 
    i = "Not a friend" 
}