iPhone Obj C——对一个可变字典数组进行排序——显示一个字符串但按值排序
Posted
技术标签:
【中文标题】iPhone Obj C——对一个可变字典数组进行排序——显示一个字符串但按值排序【英文标题】:iPhone Obj C -- Sorting a Mutable Array of dictionaries -- display a string but sort by value 【发布时间】:2010-01-27 17:42:12 【问题描述】:我有一个 NSMutableArray,里面有 30 个字典。每个都包含一个名称和一个值。我目前对名称进行了排序,以便按字母顺序在表格视图中显示。但是,我想制作一个 UIButton 来提供仍然显示名称的选项,但按值排序。该值不需要显示。此外,这些代码将放置在 .m/.h 文件中的什么位置?谢谢!
【问题讨论】:
【参考方案1】:为了能够帮助您,我需要使用测试数据。假设您的数据数组如下所示:
NSMutableArray *aMutableArray = [NSMutableArray arrayWithObjects:
[NSDictionary dictionaryWithObjectsAndKeys:
@"A", @"name",
[NSNumber numberWithInt:6], @"value", nil],
[NSDictionary dictionaryWithObjectsAndKeys:
@"C", @"name",
[NSNumber numberWithInt:2], @"value", nil],
[NSDictionary dictionaryWithObjectsAndKeys:
@"B", @"name",
[NSNumber numberWithInt:4], @"value", nil], nil];
在这种情况下,这是按值排序的方式:
NSSortDescriptor *aSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"value" ascending:YES];
[aMutableArray sortUsingDescriptors:[NSArray arrayWithObject:aSortDescriptor]];
至于该代码的放置位置,请将其放置在您需要进行重新排序的任何位置(当然是在实现 [.m] 文件中)。
HTH,如果有任何问题,请在 cmets 中问他们。
【讨论】:
非常感谢!但是,我的数组和字典存储在 plist 中!!!很抱歉把它漏掉了。我发现(看起来)如果不是不可能的话,这将是极其困难的。因此,我转向了一个基于窗口的项目,其中包含一个标签栏和导航控制器。我现在正在设置第一个选项卡,其中有一个导航控制器,如下所示: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath // 导航逻辑可能到这里。创建并推送另一个视图控制器。 DescriptionViewController *descriptionViewController = [[DescriptionViewController alloc] initWithNibName:@"DescriptionViewController" bundle:nil]; descriptionViewController.teamarray = [self.teams objectAtIndex:indexPath.row]; [self.navigationController pushViewController:descriptionViewController Animation:YES]; [descriptionViewController 发布]; 但是,我收到错误:无法设置对象 - 只读属性或未找到设置器。我知道它一定很容易解决,但我在这方面完全是新手......谢谢。以上是关于iPhone Obj C——对一个可变字典数组进行排序——显示一个字符串但按值排序的主要内容,如果未能解决你的问题,请参考以下文章
iphone:setObject:forKey:和setValue:forKey:在将条目添加到可变字典中的区别是啥[重复]