如何使用2键对数组进行排序

How to sort array using 2 key

我有包含字典的数组,用于 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];
}];

尚未测试代码,因此可能需要一些调整