2016-11-28 2 views
-1

Wie zu verwenden enthält im Fall, wenn ein bestimmtes Objekt-Array ein Objekt enthält, benötigt.Verwendung von ".contains" für ein Objekt-Array in Swift 3.0

Versuchen, Kontrollkästchen (mit 2 Bildern) für Tabellenansicht Zeilen markieren und deaktivieren.

Code:

var originalParams = [ParamsModel]() 
var selectedParams = [ParamsModel]() 
if selectedParams.contains(originalParams[indexPath.index]) { 
      cell.btnSelect.setBackgroundImage(UIImage(named:"checked.png"), for: UIControlState.normal) 
     } 
     else 
     { 
      cell.btnSelect.setBackgroundImage(UIImage(named:"unchecked.png"), for: UIControlState.normal) 
     } 

Ich verwende swift 3.0 .it zeigt Compiler-Fehler "Fehlende Argument label 'wo' in Call". Jede Hilfe wird geschätzt.

+1

Was fragen Sie? Das ist wirklich unklar. – Alexander

+0

Funktioniert das so, wie Sie möchten: 'selectedcheckboxArray.contains (checkboxArray.objectAtIndex (indexPath.row))'? – Alexander

+3

Übrigens, verwenden Sie nicht "Array" in den Namen der Variablen. Machen Sie es einfach im Plural, und das Array ist impliziert. Zum Beispiel 'selectedCheckboxes' anstelle von' selectedcheckboxArray' – Alexander

Antwort

1

ParamsModel muss Equatable anzupassen, wenn Sie contains(_:) rufen auf einem Array von ParamsModel Instanzen in der Lage sein wollen.

Dieser Code kann auch kurz und bündig wie folgt geschrieben werden:

let imageName = selectedParams.contains(originalParams[indexPath.index]) ? "checked.png" : "unchecked.png" 
cell.btnSelect.setBackgroundImage(UIImage(named: imageName), for: .normal) 
+0

Danke. Ich habe die Modellklasse gemacht gleichzusetzen Klasse ParamsModel entsprechen: {gleichzusetzen // Mark: Eigenschaften var param: String var isSelected: Bool // Mark: Instanzierung init (param: String, isSelected: Bool) { self.param param = self.isSelected = isSelected } static func == (lS: ParamsModel, RHS: ParamsModel) -> Bool { return lhs.param == rhs.param } } Aber jetzt ist der Fehler in enthält "kann nicht tiefgestellt werden ein Wert vom Typ ParamsModel auf einen Index vom Typ ‚_‘ " – user2695433

+0

, der wie eine neue Frage klingt: p – Alexander

+0

ich werde es eher als eine neue Frage hinzufügen: P – user2695433