2011-12-12 27 views
0

NSDictionary有点问题并进行排序。我已阅读了几篇有关使用某些方法的文章,如sortedArrayUsingSelectorkeysSortedByValueUsingComparator,但无法完全理解。目前我有一个表格视图控制器正确显示一些数据。我唯一的问题是它显示它的顺序(或更确切地说,这些部分的顺序)。用键存储数组的最佳方法,并按条目顺序对它们进行排序

在声明文件:

@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]; 

个体单元中的数据被从cellForRowAtIndexPath方法里的数组NSArray *listData =[self.tableContents objectForKey:[self.keys objectAtIndex:[indexPath section]]];访问。

虽然这工作正常,我遇到的问题是,而不是显示在temporary编写的顺序部分,它是这样随机。希望能得到一些指导。

回答

4

词典不保证排序,因此tableContents没有记忆您将数组添加到它的顺序。您应该在NSArrays中保留有序的数据。

将节的标题放在单独的NSArray中。然后在需要时使用字典查找单元格的数据。这可以让您按照您想要的顺序保留标题,并且仍然可以找到字典中的值。

+0

我现在就试试看,谢谢哥们。 – sooper

+0

太棒了,工作。我会尽快接受,并等待“4分钟”! – sooper

相关问题