2010-03-17 53 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