【问题标题】:How to use .contains for Array of Object in swift 4如何在swift 4中将.contains用于对象数组
【发布时间】:2018-07-01 21:41:45
【问题描述】:
 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)
                    }
                }
            }
        }
    }
}

我将在lac_combined_array中追加2个对象我想添加一个条件

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

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

如何使用 .contains 在swift4中的对象数组中

【问题讨论】:

  • 你真的把你的代码测试了吗?我认为他们工作 XD
  • 或者,如果您要询问如何组合条件...只需将 && 放在它们之间,就像使用“if”检查一样
  • 我试过了,但不幸的是,发生了错误
  • 我的lac_combined_array 是对象数组,我认为错误的原因是当我在where condition 中使用IBPChaptersLegalAidClinics
  • 我不会将它们合并到.contains condition @Ben Ong

标签: ios arrays realm swift4 contains


【解决方案1】:

检查元素的类型,如果数组包含不同类型的对象,则进行相应的比较:

    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
    }) {
        //......
    }

【讨论】:

  • 不,先生,属性不一样。 @yun CHEN,我只想在数组中追加 2 个对象/模型并使用它们的每个属性
  • Enn...,但是您将不同的对象 LegalAidClinicsIBPChapters 添加到同一个数组中。您声明的数组必须是 ,这就是为什么 {where 表达式有问题。
  • 我尝试了 Any 但仍然出现错误,我尝试了 AnyObject 并且错误消失了
  • 关于你的模型,只需让它继承自 ICommonProperties,并添加通用属性即可。保留其他人。
  • 我的其他功能因为@Yun CHEN的变化而受到影响:(
猜你喜欢
  • 1970-01-01
  • 2021-08-28
  • 1970-01-01
  • 2019-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-04
  • 1970-01-01
相关资源
最近更新 更多