NSArray *mainArray = @[
@{
@"Title":@"A",
@"value":@"1",
@"priority":@[[NSNumber numberWithInt:4]]
},
@{
@"Title":@"F",
@"value":@"1",
@"priority":@[[NSNumber numberWithInt:1]]
},
@{
@"Title":@"E",
@"value":@"1",
@"priority":@[]
},
@{
@"Title":@"C",
@"value":@"1",
@"priority":@[[NSNumber numberWithInt:3]]
},
@{
@"Title":@"D",
@"value":@"1",
@"priority":@[[NSNumber numberWithInt:5]]
},
@{
@"Title":@"B",
@"value":@"1",
@"priority":@[[NSNumber numberWithInt:2]]
},
@{
@"Title":@"E",
@"value":@"1",
@"priority":@[]
},
@{
@"Title":@"G",
@"value":@"1",
@"priority":[NSNull null]
}
];
NSArray *sortedArray = [mainArray sortedArrayUsingComparator:^(NSDictionary *dic1, NSDictionary *dic2) {
int priority1 = 0,priority2 = 0;
if([[dic1 objectForKey:@"priority"] isKindOfClass:[NSArray class]]){
NSArray *arr = (NSArray *)[dic1 objectForKey:@"priority"];
if(arr.count != 0)
priority1 = [[arr objectAtIndex:0] intValue];
}
if([[dic2 objectForKey:@"priority"] isKindOfClass:[NSArray class]]){
NSArray *arr = (NSArray *)[dic2 objectForKey:@"priority"];
if(arr.count != 0)
priority2 = [[arr objectAtIndex:0] intValue];
}
if(priority1 > priority2) return NSOrderedAscending;
else if(priority1 < priority2) return NSOrderedDescending;
else return NSOrderedSame;
}];
> The OutPut is in my LOG:
>
> 2014-11-10 12:09:20.925 Sort Array[1624:591502] sorted array: (
> {
> Title = D;
> priority = (
> 5
> );
> value = 1;
> },
> {
> Title = A;
> priority = (
> 4
> );
> value = 1;
> },
> {
> Title = C;
> priority = (
> 3
> );
> value = 1;
> },
> {
> Title = B;
> priority = (
> 2
> );
> value = 1;
> },
> {
> Title = F;
> priority = (
> 1
> );
> value = 1;
> },
> {
> Title = E;
> priority = (
> );
> value = 1;
> },
> {
> Title = E;
> priority = (
> );
> value = 1;
> },
> {
> Title = G;
> priority = "<null>";
> value = 1;
> })
Ваши приоритеты строки или числа? – Rob
@Rob, На самом деле мне нужно преобразовать в Integer из String & then Sort out. – user2893370