2011-12-12 25 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

相關問題