2013-10-25 91 views
-5

我有一個NSMutableArray名稱是xyz,array的每個元素都包含單獨的Dictionary。我想例如結構該主Dictionary進行排序:無法排序在ios中的陣列

$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 = "[email protected]"; 
    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 = "[email protected]"; 
    ownername = abc; 
    secret = 9665d3ec; 
    server = 74; 
    tags = "vision:food=0635"; 
    title = 01200033; 
}, 

我想排序此陣列由稱號;

我使用LinqToObjectiveC-master庫,但啓用排序。

該解決方案的幫助,簡單的解決方案高度讚賞。

+2

你的數據結構無效。你不能有一個數組沒有密鑰的字典。 – vikingosegundo

+0

@vikingosegundo請檢查我的問題,我已修改。 –

+0

所以這根本就不是字典。 – vikingosegundo

回答

0

作爲一個鍵/值集,就無法進行排序的字典,但你可以在閱讀這樣的值的數組排序:

NSArray *dictionaryValues = [flickr allValues]; 

,然後排序使用sortDescriptor

NSSortDescriptor *nameSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 
NSArray *flickrSortedValues = [dictionaryValues sortedArrayUsingDescriptors:@[descriptor]]; 
+0

對於'@ [描述符]'+1。 – zaph

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); 
+1

用於「比較:選項:」的+1 – vikingosegundo