我正在使用两种类型的实体: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 ...
答案 0 :(得分:1)
使用排序的名字和姓氏的示例
史密斯约翰 安徒生简 克拉克安妮 史密斯大卫 约翰逊罗斯使用NSDescriptor
排序排序描述符不仅可用于排序数组,还可用于指定应如何排列表视图中的元素,还可以使用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];
结果数组如下所示:
安徒生简 克拉克安妮 约翰逊罗斯 史密斯大卫 史密斯约翰答案 1 :(得分:0)
一个例子:
NSArray *combinedArray = [self.persons arrayByAddingObjectsFromArray:self.departments];
NSArray *sortedArray = [combinedArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
NSString *name1 = ([obj1 isKindOfClass:[Person class]]) ? [[(Person *)obj1 lastName] stringByAppendingString:[(Person *)obj1 firstName]] : [(Department *)obj1 name];
NSString *name2 = ([obj2 isKindOfClass:[Person class]]) ? [[(Person *)obj2 lastName] stringByAppendingString:[(Person *)obj2 firstName]] : [(Department *)obj2 name];
return [name1 caseInsensitiveCompare:name2];
}];