我有一个包含字典的数组,用于 exp..
[
{
name : dilip
},
{
address : ahmedabad
},
{
name : ajay
},
{
address : baroda
},
{
name : ram
},
{
address : dwarka
},
.
.
.
]
现在我想按字母数字顺序对这个数组进行排序,就像这样..
(
{
address = ahmedabad;
},
{
name = ajay;
},
{
address = baroda;
},
{
name = dilip;
},
{
address = dwarka;
},
{
name = ram;
}
)
但是如果任何字典没有名称,那么它将使用地址排序,
有什么建议我们该怎么做吗?
我试过下面的代码,但没有得到正确的结果,
NSSortDescriptor * brandDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSSortDescriptor * productTitleDescriptor = [[NSSortDescriptor alloc] initWithKey:@"address" ascending:YES];
NSArray * sortDescriptors = [NSArray arrayWithObjects:brandDescriptor, productTitleDescriptor, nil];
NSArray * sortedArray = [ary sortedArrayUsingDescriptors:sortDescriptors];
我有 1 个想法,在名称中添加地址字符串,然后对数组进行排序,一旦数组排序,就会将其改回地址,
但是想知道有没有其他的选择。
最佳答案
认为这可能会成功
NSArray * sortedArray = [array sortedArrayUsingComparator:^NSComparisonResult(NSDictionary * _Nonnull obj1, NSDictionary * _Nonnull obj2) {
NSString * s1 = [obj1 objectForKey:@"name"];
if(s1 == nil){
s1 = [obj1 objectForKey:@"address"];
}
NSString * s2 = [obj2 objectForKey:@"name"];
if(s2 == nil){
s2 = [obj2 objectForKey:@"address"];
}
return [s1 compare:s2];
}];
还没有测试代码,所以可能需要一些调整
关于ios - 如何使用2个键对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38581149/