代码之家  ›  专栏  ›  技术社区  ›  Benjamin Ortuzar

按人员在公司中的角色分类

  •  2
  • Benjamin Ortuzar  · 技术社区  · 16 年前

    我试图找到一种很好的方法,根据员工在特定公司中的角色对其进行分类。让事情变得棘手的是,一个人可以在不同的公司中扮演一个或多个角色。

    目前,我有一个“person”对象数组,每个对象都有一组与之关联的“roles”对象。

    与此类似:

    Person
    -personId
    -personName (NSString)
    -personRoles (NSSet)
    
    Role
    -roleId (NSNumber)
    -roleWeight (NSNumber)
    -roleName (NSString)
    -companyId (NSNumber)
    

    我需要一些能够解决类似问题的代码:

    按role.roleweight对人员数组排序,其中role.companyID=x

    我一直在研究排序描述符,但它们似乎不足以解决这个挑战。欢迎提出任何建议。

    2 回复  |  直到 16 年前
        1
  •  1
  •   Community Mohan Dere    9 年前

    你要看看这个

    How to sort an NSMutableArray with custom objects in it?

    基本的想法是,给定任何两个人的对象,你必须说出它们的比较方式。是一个小的,大的,还是相同的。

    - (NSComparisonResult)compare:(id)otherObject {
        // get the role for self
        // get the role for other object
        // compare their weights
        // return the right result
    }
    

    要输入公司ID,我想你需要 sortUsingFunction:context: ,函数如下

    static int comparePersonsUsingCompanyID(id p1, id p2, void *context)
    {
        // cast context to a company id
        // get the role for p1
        // get the role for p2
        // compare their weights
        // return the right result
    }
    
        2
  •  1
  •   Gobra    16 年前

    假设您使用nsarray存储数据(在coredata store上),那么就可以使用nsarraycontroller。控制器支持排序描述符和 NSPredicate 也。在您的案例中,您需要一个谓词来筛选人员(其中role.companyid=x)和排序描述符来按roleweight排序。