ios - 对包含多个对象类的 NSArray 进行排序

标签 ios objective-c nsarray nsfetchedresultscontroller

我正在使用两种类型的实体:Person 对象和 Department 对象。 Person 对象具有姓氏、名字、部门名称和电话号码等属性。 Department 对象具有部门名称和电话号码属性。

我能够使用 NSFetchedResultsControllers 来检索和排序 Person 和 Department 对象。我如何将这些结果组合成一个数组,以 Person 对象的姓氏和名字以及 Department 对象的部门名称为键,如下所示:

    Accounting                                    5-5544
    Almond, Betty         Accounting              5-5544
    Almond, Robert        Shipping                5-4345
    Brown, John           Building Maintenance    5-5566
    Building Maintenance                          5-5566 ...

最佳答案

使用排序的名字和姓氏示例

史密斯约翰 安徒生简 克拉克·安妮 史密斯大卫 约翰逊·罗斯

使用 NSDescriptor 排序

排序描述符不仅可以用于对数组进行排序,还可以指定 TableView 中的元素应该如何排列,还可以与 Core Data 一起指定从获取请求返回的对象的顺序。使用排序描述符,您可以轻松地通过多个键对数组进行排序。我们将按姓氏然后按姓名对数组进行排序。

NSSortDescriptor *firstDescriptor = [[NSSortDescriptor alloc] initWithKey:@"surname" ascending:YES];
NSSortDescriptor *secondDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];

NSArray *sortDescriptors = [NSArray arrayWithObjects:firstDescriptor, secondDescriptor, nil];

NSArray *sortedArray = [self.persons sortedArrayUsingDescriptors:sortDescriptors];

生成的数组将如下所示:

安徒生简 克拉克·安妮 约翰逊罗斯 史密斯大卫 史密斯·约翰

关于ios - 对包含多个对象类的 NSArray 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24749727/

相关文章:

cocoa-touch - 想要使用 UISwipeGesture 在 NSArray 中的图片之间平滑过渡或滑动

ios - 将目标添加到闭包内的按钮不起作用

ios - 在 Storyboard中连接 Cell Prototype 的导出

objective-c - Cocoa Interface Builder 对象初始化

iphone - 断言宏 : queueEntry error -ios

objective-c - 我应该在哪个文件夹中放置一个文件作为 xcode 4 中的命令行参数传递?

xcode - 将数组保存到 plist

objective-c - 访问数组中对象的属性

ios - 如何移动 MKMapView 的中心,以便默认位置图标转到底部中心

ios - 当他们要求提供应用内购买截图时,苹果到底在寻找什么?