我想根据数组self.contacts中的 first_name 对主数组进行排序
用于对数组进行排序的代码
-(void)Sort
{
NSSortDescriptor *sdName = [[NSSortDescriptor alloc] initWithKey:@"first_name" ascending:YES];
self.contacts = [NSMutableArray arrayWithArray:[self.contacts sortedArrayUsingDescriptors:[NSArray arrayWithObjects:sdName, nil]]];
}
迈德特
self.contacts = (
{
contact = {
"first_name" = "Test R";
};
"last_met" = (
{
"last_met_date" = "2014-10-09";
}
);
},
{
contact = {
"first_name" = "Test K";
};
"last_met" = (
{
"last_met_date" = "2014-10-09";
}
);
}
)
答案 0 :(得分:1)
查看你的代码看起来你想要对你的联系人数组进行排序,这是一个字典数组,我在这里提供的解决方案就是针对那种情况。
你可以这样做:
NSArray *sortedContactsArray = [self.contacts sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
NSString *first_name1 = [obj1 valueForKeyPath:@"contact.first_name"];
NSString *first_name2 = [obj2 valueForKeyPath:@"contact.first_name"];
return [first_name1 compare:first_name2];
}];
请注意,它可能不安全和最佳,但这只是其中一种方法。
答案 1 :(得分:1)
尝试使用此排序描述符:
descriptor = [[NSSortDescriptor alloc] initWithKey:@"contact.first_name"
ascending:YES];
参数key
实际上是关键路径,NSDictionary
符合KV标准。您可以编写类似:[contacts[0] valueForKeyPath:@"contact.first_name"]
。