如何在iOS swift中的嵌套数组(经过的关系)中的条件过滤对象数组



我试图在嵌套的距离关系中筛选匹配条件上的对象数组,并且不确定如何编写过滤器。

为了说明这一点,请考虑我已经建模了一个管理人员申请大学并为以下实体和关系建模的系统:

  • 与学校实体有许多关系的人实体
  • 与校长实体有一方面关系的学校实体(除了与人实体的倒数关系外(
  • 与一个关系的校长实体Financialawardtype实体(除了与学校实体的倒数关系外(

  • Financialawardtype实体

例如,Financialawardtype实体只是捕获了不同类型的金融奖励,例如授予,绩效奖学金或贷款。

出于本示例的目的,要求是金融奖项是针对学校类型的特定的,因此对Schooltype和Financialawardtype实体之间的关系进行建模。

我想做的是创建一个过滤器,该过滤器将为我提供申请提供特定类型财务奖励的学校的个人实体,并且很难确定如何编写给定的过滤器嵌套的"与许多"关系。

我可以通过多个步骤进行此操作,例如:

  1. 过滤校长列表,以给我提供优异奖的校长..
  2. 然后,过滤学校只给我那些是过滤的校园之一的学校..
  3. 然后,过滤者只给我那些申请的人那些过滤的学校...

这似乎有些低效,想知道是否有一个更优雅的解决方案来执行我正在寻找的过滤器。任何建议将不胜感激。如果需要,我可以在上述步骤中显示代码或尝试的代码段。

回应一些评论和建议...我希望使用filter((返回人的收藏...类似的东西:

    let personsReceivingGrants = persons.schoolsApplied.filter() {
        $0.schoolType?.awardType?.name == "Grant Award"
    }

问题在于,人 ->学校的恋爱关系被定义为任何人的nsset,并且任何人都没有类型的校准...在告诉编译器哪种类型的对象方面可能更具体是否在NSSET中,以便可以使用Filter((机制?还是有另一种更合适的方法来实现此过滤?

事先感谢您的任何建议或帮助。

因此,一旦我对此处的建议进行了编辑,并对其进行了更多的交谈,我意识到问题只是对NSSET中的类型更加具体的问题。因此,我将代码更改为以下内容,现在有效。我想在此处发布该解决方案,以防其他人遇到同样的挑战:

    let personsReceivingGrants = (persons.schoolsApplied as Set<School>).filter() {
        $0.schoolType?.awardType?.name == "Grant Award"
    }

最新更新