Search code examples
iosarraysrealmswift4contains

How to use .contains for Array of Object in swift 4


 func addData(){
   if lac_combinedFilterArray[1][0] == true{
        let Lac = realm.objects(LegalAidClinics.self)//.filter("service.lac_service_filter == true")
        for lac in Lac{
            let filteredServices = lac.service.filter("lac_service_filter == true")
            for service in filteredServices{
                let service_index = filteredServices.index(of: service)
                if lac.service.contains(filteredServices[service_index!]){
                    if !lac_combined_Array.contains(where: {$0.lac.legal_aid_clinic_id == lac.legal_aid_clinic_id}){
                        lac_combined_Array.append(lac)
                    }
                }
            }
        }
    if lac_combinedFilterArray[1][1] == true{
        let chapters = realm.objects(IBPChapters.self)
        for chapter in chapters{
            let filteredServices = chapter.service.filter("lac_service_filter == true")
            for service in filteredServices{
                let service_index = filteredServices.index(of: service)
                if chapter.service.contains(filteredServices[service_index!]){
                    if !lac_combined_Array.contains(element: Object){
                        lac_combined_Array.append(chapter)
                    }
                }
            }
        }
    }
}

I will append 2 objects in lac_combined_array and I want to put a condition

if lac_combined_array.contains(where: {$0.IBPChapters.ibp_chapter_id == chapter.ibp_chapter_id})

and

if lac_combined_array.contains(where: {$0.LegalAidClinics.legal_aid_clinics_id == lac.legal_aid_clinics_id})

How to use .contains in array of object in swift4


Solution

  • To check the element's type and then make comparisons correspondingly if the array contains objects of different types:

        if lac_combined_array.contains(where: { (obj) -> Bool in
            if let chapters = obj as? IBPChapters {
                return chapters.ibp_chapter_id == chapter.ibp_chapter_id
            }
            else if let legalAidClinics = obj as? LegalAidClinics {
                return legalAidClinics.legal_aid_clinics_id == lac.legal_aid_clinics_id
            }
            return false
        }) {
            //......
        }