对NSDictionary
和排序有点问题。我在这里阅读了一些关于使用某些方法的帖子,例如sortedArrayUsingSelector
和keysSortedByValueUsingComparator
,但无法完全掌握它。目前我有一个Table View Controller正确显示一些数据。我唯一的问题是它显示它的顺序(或者更确切地说,是部分的顺序)。
在声明文件中:
@interface SettingsTableViewController : UITableViewController {
NSDictionary *tableContents;
NSArray *keys;
}
@property (nonatomic,retain) NSDictionary *data;
@property (nonatomic,retain) NSArray *keys;
@end
viewDidLoad
的实施文件:
NSArray *arrayTemporary1 = [[NSArray alloc]initWithObjects:@"Settings 1",@"Setting 2",@"Setting 3",@"Setting 4",nil];
NSArray *arrayTemporary2 = [[NSArray alloc]initWithObjects:@"Enable Gestures",nil];
NSArray *arrayTemporary3 = [[NSArray alloc]initWithObjects:@"Instructions",@"Frequently Asked Questions",@"About",nil];
NSDictionary *temporary =[[NSDictionary alloc]initWithObjectsAndKeys:arrayTemporary1,@"Settings",arrayTemporary2,@"Application",arrayTemporary3,@"Information",nil];
self.tableContents = temporary;
self.keys = [self.tableContents allKeys];
[temporary release];
[arrayTemporary1 release];
[arrayTemporary2 release];
[arrayTemporary3 release];
从NSArray *listData =[self.tableContents objectForKey:[self.keys objectAtIndex:[indexPath section]]];
方法中的数组cellForRowAtIndexPath
访问单个单元格数据。
虽然这很好用,但我遇到的问题是,它不是按照temporary
中编写的顺序显示这些部分,而是随机执行。会很感激一些指导。
答案 0 :(得分:4)
字典不保证排序,因此tableContents
没有记录您向其添加数组的顺序。您应该在NSArrays中保留有序数据。
将章节的标题放在单独的NSArray中。然后使用您需要的字典在需要时查找单元格的数据。这使您可以按照所需的顺序保留标题,并且仍然可以在字典中查找值。