Search code examples
arraysswift3contain

how to use ".contains" for an object array in swift 3.0


How to use contains in case if needs to get a particular object array contains an object.

Trying to select and deselect checkbox ( using 2 images ) for tableview rows.

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)
        }

I'm using swift 3.0 .it shows compiler error "Missing argument label 'where' in call". Any help is appreciated.


Solution

  • ParamsModel needs to conform to Equatable if you want to be able to call contains(_:) on an Array of ParamsModel instances.

    This code can also be written more succinctly as:

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