Ios 使用NSDictionary对UITableview中的数据进行排序

Ios 使用NSDictionary对UITableview中的数据进行排序,ios,iphone,objective-c,uitableview,Ios,Iphone,Objective C,Uitableview,我有一个应用程序,我需要支持,直到原来的开发者回来 基本上,它有一种方法,可以将数据分组到UITableView的各个部分 这一切都很好地工作,并通过DogLocation显示了各个部分 这是我的代码: -(void)loadSortedData:(NSString*)breedToLoad fieldToSort:(NSString*)sortField { self.items = [DbUtilities getDogsByBreed:breedToLoad SortField

我有一个应用程序,我需要支持,直到原来的开发者回来

基本上,它有一种方法,可以将数据分组到
UITableView
的各个部分

这一切都很好地工作,并通过
DogLocation
显示了各个部分

这是我的代码:

-(void)loadSortedData:(NSString*)breedToLoad fieldToSort:(NSString*)sortField
 {

    self.items = [DbUtilities getDogsByBreed:breedToLoad SortField:sortField];

    NSMutableDictionary * theDictionary = [NSMutableDictionary dictionary];

    for ( Dog * object in self.items )
    {
      NSMutableArray * theMutableArray = [theDictionary objectForKey:object.DogLocation];

      if ( theMutableArray == nil )
      {
        theMutableArray = [NSMutableArray array];
        [theDictionary setObject:theMutableArray forKey:object.DogLocation];
      }

      [theMutableArray addObject:object];

    }

    self.sortedMediaItems = [[theDictionary allKeys]   sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

   /* Save `theDictionary` in an instance variable */
   self.theSource = theDictionary;
   [self.tableView reloadData];

}
我在我的
ViewDidLoad
中使用以下语法调用此方法:

[self loadSortedData:@"Cattle" fieldToSort:@"DogLocation"];
我试图实现的是通过在方法中传递一个值来调用这个方法,例如,这样我就可以按照其他字段对它进行排序,而不仅仅是DogLocation,例如DogAge、DogPrice

有谁能指点我或者告诉我一个更好的方法来实现这一点,而不是写一个大的if-else语句


提前谢谢。

您可以尝试使用M13OrderedDictionary,它基于NSObject而不是NSDictionary,但它完成了所需的工作:

您可以尝试使用M13OrderedDictionary,它基于NSObject而不是NSDictionary,但它完成了所需的工作:

您可以尝试使用M13OrderedDictionary,它基于NSObject而非NSDictionary,但执行所需的任务:

您可以尝试使用M13OrderedDictionary,它基于NSObject而非NSDictionary,但执行所需的任务:

只要
sortField
始终是
Dog
的有效属性,就可以使用


只要
sortField
始终是
Dog
的有效属性,就可以使用


只要
sortField
始终是
Dog
的有效属性,就可以使用


只要
sortField
始终是
Dog
的有效属性,就可以使用


太棒了!!谢谢你,这正是我想要的。太棒了!!谢谢你,这正是我想要的。太棒了!!谢谢你,这正是我想要的。太棒了!!谢谢你,这正是我想要的。
for ( Dog * object in self.items )
{
  id key = [object valueForKey:sortField];
  NSMutableArray * theMutableArray = [theDictionary objectForKey:key];

  if ( theMutableArray == nil )
  {
    theMutableArray = [NSMutableArray array];
    [theDictionary setObject:theMutableArray forKey:key];
  }

  [theMutableArray addObject:object];
}