我的数组有字典,对于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];
我有一个想法,就是在名称中添加地址字符串而不是排序数组,一旦排序数组,就会将其更改回地址,
但是想知道是否还有其他选择。
答案 0 :(得分: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];
}];
havnt测试了代码,因此可能需要一些调整