当我在NSMutableDictionary中添加值时,它将自动设置Key.我如何禁用它,并按照第一组和第二组进行排列.
NSMutableDictionary* filteredDictionary = [NSMutableDictionary dictionary]; [filteredDictionary setObject:@"abc" forKey:@"1"]; [filteredDictionary setObject:@"abc" forKey:@"3"]; [filteredDictionary setObject:@"abc" forKey:@"2"]; [filteredDictionary setObject:@"abc" forKey:@"5"]; [filteredDictionary setObject:@"abc" forKey:@"4"]; NSLog(@"%@",filteredDictionary); current output: { 1 = abc; 2 = abc; 3 = abc; 4 = abc; 5 = abc; } but i want { 1 = abc; 3 = abc; 2 = abc; 5 = abc; 4 = abc; }
有没有办法按照键禁用排序?
解决方法
这是一种做法:
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"key" ascending:YES comparator:^(id obj1,id obj2) { if (obj1 > obj2) { return (NSComparisonResult)NSOrderedDescending; } if (obj1 < obj2) { return (NSComparisonResult)NSOrderedAscending; } return (NSComparisonResult)NSOrderedSame; }]; NSArray *sortedKeys = [[filteredDictionary allKeys] sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]]; NSMutableDictionary *orderedDictionary = [NSMutableDictionary dictionary]; for (NSString *index in sortedKeys) { [orderedDictionary setObject:[filteredDictionary objectForKey:index] forKey:index]; } filteredDictionary = orderedDictionary;