-5

我有一个NSMutableArray名字是 xyz 并且每个元素都array包含 individual Dictionary。我想对这个主要Dictionary的例如结构进行排序:

 $0 = 0x0963e730 <__NSArrayM 0x963e730>(
{
    accuracy = 0;
    context = 0;
    dateupload = 1382375073;
    description =     {
        "_content" = "";
    };
    farm = 4;
    id = 10406310594;
    isfamily = 0;
    isfriend = 0;
    ispublic = 1;
    latitude = 0;
    longitude = 0;
    owner = "35744@N03";
    ownername = abc;
    secret = f9fd3;
    server = 3830;
    tags = "";
    title = 17740013;
},
{
    accuracy = 0;
    context = 0;
    dateupload = 1382375072;
    description =     {
        "_content" = "";
    };
    farm = 8;
    id = 10406317735;
    isfamily = 0;
    isfriend = 0;
    ispublic = 1;
    latitude = 0;
    longitude = 0;
    owner = "35944@N03";
    ownername = abc;
    secret = 9665d3ec;
    server = 74;
    tags = "vision:food=0635";
    title = 01200033;
},

我想按标题对这个数组进行排序;

我使用 LinqToObjectiveC-master 库但启用排序。

对此解决方案的帮助,非常感谢简单的解决方案。

4

2 回答 2

1

尝试这个:-

NSDictionary *person1 = [NSDictionary dictionaryWithObjectsAndKeys:@"d",@"name",@"xyz",@"add",nil];
NSDictionary *person2 = [NSDictionary dictionaryWithObjectsAndKeys:@"e",@"name",@"pqr",@"add",nil];
NSDictionary *person3 = [NSDictionary dictionaryWithObjectsAndKeys:@"a",@"name",@"stu",@"add",nil];

NSMutableArray *arr = [[NSMutableArray alloc] initWithObjects:person1,person2,person3,nil];

NSSortDescriptor *name = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
[arr sortUsingDescriptors:[NSArray arrayWithObject:name]];

// before sort
NSLog(@"Before %@",arr);
[arr sortedArrayUsingComparator:^(NSDictionary *item1, NSDictionary *item2) {
    NSString *first = [item1 objectForKey:@"name"];
    NSString *second = [item2 objectForKey:@"name"];
    return [first compare:second options:NSCaseInsensitiveSearch];
}];
// After sort
NSLog(@"After %@",arr);
于 2013-10-25T10:46:07.360 回答
0

作为键/值集合,您无法对字典进行排序,但您可以在读取时对值数组进行排序,如下所示:

NSArray *dictionaryValues = [flickr allValues];

然后使用 sortDescriptor 进行排序

NSSortDescriptor *nameSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *flickrSortedValues = [dictionaryValues sortedArrayUsingDescriptors:@[descriptor]];
于 2013-10-25T10:38:08.133 回答