2010-03-17 50 views
0

我已經此設置可可 - 數組沒有排序?

NSMutableSet *mySet = [NSMutableSet setWithObjects: @"2", @"8", @"7", @"0", @"3", nil]; 

我的設定複製到一個數組並使用

NSArray *sortedArray = [[mySet allObjects] sortedArrayUsingSelector:@selector(compare:)]; 

所得陣列是在完全相同的順序作爲設定,並且不被分類排序。爲什麼?

感謝您的任何幫助。

編輯:糾正TYPO。

+1

copypasted你的代碼 - 它排序確定... – Vladimir 2010-03-17 15:09:00

+0

不在我的代碼。奇怪的是,在我的代碼中,sortedArray有一個對象,而不是5 ...它就像數組被存儲在sortedArray的單個條目中......數組中的一種數組......非常奇怪... – SpaceDog 2010-03-17 15:59:57

+0

我想到了。謝謝。檢索原始設置時出錯。現在它工作正常。謝謝你們給我的所有幫助! – SpaceDog 2010-03-17 16:05:49

回答

3

我粘貼跑你這樣的代碼:

NSMutableSet *mySet = [NSMutableSet setWithObjects: @"2", @"8", @"7", @"0", @"3", nil]; 
NSLog(@"mySet=%@",mySet); 
NSArray *sortedArray = [[mySet allObjects] sortedArrayUsingSelector:@selector(compare:)]; 
NSLog(@"sortedArray=%@",sortedArray); 

,輸出:

2010-03-17 11:06:27.982 iPhoneTestBed[41907:207] mySet={(
    0, 
    2, 
    7, 
    8, 
    3 
)} 
2010-03-17 11:06:27.984 iPhoneTestBed[41907:207] sortedArray=(
    0, 
    2, 
    3, 
    7, 
    8 
) 

我覺得你的問題是你的數組排序的記錄。也許你不小心記錄了集合而不是數組。一旦這樣做,我浪費了半天的時間。

3

嗯,它正確排序,一旦我糾正了一套建設

NSMutableSet *mySet = [NSMutableSet setWithObjects: @"2", @"8", @"7", @"0", @"3", nil]; 

記住,​​是char*,這是一種最原始的,你很少在Objective-C的使用,你可以不把它放在NSArray@"abc"NSString,它是一個對象。

+0

對不起。這是我的代碼在SO上的拼寫錯誤。我的代碼有@ ...而不是排序。 – SpaceDog 2010-03-17 14:58:01

+0

你*不能*排序'mySet',或任何其他集合。他在評論TechZen的回答時說,他確實記錄了該集合而不是已排序的數組。 – 2010-03-18 01:07:52