2015-08-20 3 views
7

Non ho trovato nulla su questo in Swift. Ho trovato come trovare valori univoci su un array, ma non questo. Ci dispiace se suona abbastanza semplice ...Aggiungere valori univoci a un array in swift

Ma ho il seguente array

var selectedValues = [String]() 

E il valore successivo viene da una query Parse

var objectToAppend = object.objectForKey("description")! as! String 

questo è il modo di fare I'am al momento

self.selectedHobbies.append(objectToAppend) 

Ma poiché la query viene ripetuta, finisce per aggiungere valori ripetuti. Funziona, ma voglio solo non sprecare memoria e mantenere solo valori unici.

Qualche idea su come risolverlo in fretta?

risposta

10

È possibile utilizzare un Set che garantisce valori univoci.

var selectedValues = Set<String>() 
// ... 
selectedValues.insert(newString) // will do nothing if value exists 

Ovviamente, gli elementi di un Set non sono ordinati.

Se si desidera mantenere l'ordine, continuare con lo Array ma controllare prima di inserire.

if !selectedValues.contains("Bar") { selectedValues.append("Bar") } 
+0

Grazie amico !!! : ^) – GuiSoySauce

+0

è possibile mantenere la sintassi del codice ma usare un '[String]' invece di un 'Set '? A 'Set ' non mi serve molto dato che posso convertirlo in un '[String]'. Ho provato molto non ho avuto molta fortuna con esso. – GuiSoySauce

+0

@Mundi Non è necessario eseguire un controllo 'contains'. Se si inserisce e l'elemento esiste già, non succederà nulla. – Alexander