2012-12-18 64 views
0

我想排序內部有NSInteger值的NSMutableArray。我試圖用這個解決方案:使用NSInterger值對NSMuatbleArray進行排序

NSArray *sorted = [array sortedArrayUsingSelector:@selector(compare:)]; 

它幾乎工作,所以我想問問爲什麼不一切都好吧。下面是數據。例如:

not sorted = (
    30, 
    42, 
    54, 
    6, 
    18 
) 

sorted = (
    18, 
    30, 
    42, 
    54, 
    6 
) 

我們可以看到,它排序的一切,但6值,它是在年底關閉陣列。

爲什麼會發生這種情況?

謝謝。

全部方法:

- (void) initialize{ 
    NSInteger min = 30; 
    NSInteger interval = 12; 
    NSInteger count = floor(60/interval); 

    for (int i = 0; i < count; i++) { 

     [array addObject:[NSString stringWithFormat:@"%i",min]]; 
     min +=interval; 

     if (min > 60) 
      min -= 60; 
    } 

    //DLog(@"not sorted = %@",minutes); 
    array = [[array sortedArrayUsingSelector:@selector(compare:)] mutableCopy]; 
    //DLog(@"sorted = %@",minutes); 

} 
+0

你用數組做什麼?我可以在我的Mac中獲得正確的結果。 2012年12月18日16:16:12.936無題[10001:707]( 30, 42, 54, 6,) 2012年12月18日16:16:12.938無題[10001: 707]( 6, 18, 30, 42,) – onevcat

+1

這裏有一個外表http://stackoverflow.com/questions/2752992/how-to-let-the-sortedarrayusingselector-using-integer-對字符串進行排序 – CRDave

+0

您是如何封裝NSIntegers的?它們是否包含在NSStrings,NSValues或NSNumbers中? – mit3z

回答

1

您在上述情況下獲得的問題,因爲要排序的字符串值不是一個NSNumber的。 你必須使用NSNumber來添加整數的對象。然後做類似:

 NSMutableArray *array = [[NSMutableArray alloc ] initWithObjects: 
           [NSNumber numberWithInt:10],  
           [NSNumber numberWithInt:50], 
           [NSNumber numberWithInt:5], 
           [NSNumber numberWithInt:3], 
           nil]; 

     NSLog(@"SORTED = %@",[array sortedArrayUsingSelector:@selector(compare: 
                   )]); 

這會給你一個排序的數組。