2012-04-26 103 views
-1

我想設置我的TableView,並且遇到了麻煩。我的NSArray的值是彼此不同的。我知道這很難理解,但我會盡力解釋。 例如NSArray的排序

-(void)setUpContacts{ 
//set up the contacts 
NSString *string = @"ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 

letterArray = [[NSMutableDictionary alloc]init]; 

Contacts *contact = [[Contacts alloc]init]; 
contactNumbers = [contact phoneNumbers]; 

for (NSDictionary* info in contactNumbers) { 
    firstLetter = [info objectForKey:@"lastName"]; 
    index = @"_"; 
    if([firstLetter length] > 0){ 
     firstLetter =[firstLetter substringToIndex:1]; 
     firstLetter= [firstLetter capitalizedString]; 
     NSRange range = [string rangeOfString:firstLetter]; 
     if(range.length >= 0){ 
      index= firstLetter; 
     } 
    } 
    if(![letterArray objectForKey:index]){ 

     [letterArray setValue:[NSMutableArray array] forKey:index]; 
    } 
    [[letterArray objectForKey:index] addObject:info];  
}NSLog(@"%@",letterArray);} 

-(NSArray *)getLetterArraycount{ 
NSMutableArray *countArray = [[NSMutableArray alloc]init]; 
NSNumber *subCount; 

for(id key_main in letterArray){ 
    subCount = 0; 

    for(id key_sub in [letterArray objectForKey:key_main]){ 
     subCount = [NSNumber numberWithInt:[subCount intValue]+1]; 
    } 
    [countArray addObject:subCount]; 

} 
return countArray; 

}

- (void)viewDidLoad{ 
[super viewDidLoad]; 
[self setUpContacts]; 
countArrays = [self getLetterArraycount];  
indexPaths = [[NSMutableDictionary alloc]init]; 

NSArray *temp = [letterArray allKeys]; 
NSLog(@"%@",temp); 

NSLog(@"%@",countArrays); 

//set up the tableView 
self.myTableView = [[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStyleGrouped]; 
self.myTableView.delegate = self; 
self.myTableView.dataSource = self; 
self.title = @"Select Friends"; 
self.myTableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
[self.view addSubview:myTableView];} 

,並在控制檯

C =  (
      { 
     firstName = Alex; 
     kind = Mobile; 
     lastName = Chang; 
     name = "Alex Chang (Mobile)"; 
     number = "(555) 555-5555"; 
    }, 
      { 
     firstName = YuYu; 
     kind = Mobile; 
     lastName = Chen; 
     name = "YuYu Chen (Mobile)"; 
     number = "(408) 112-2334"; 
    }, 
      { 
     firstName = Chris; 
     kind = Mobile; 
     lastName = Choi; 
     name = "Chris Choi (Mobile)"; 
     number = "(999) 999-9999"; 
    }, 
      { 
     firstName = Kevin; 
     kind = Mobile; 
     lastName = Chung; 
     name = "Kevin Chung (Mobile)"; 
     number = "1 (231) 241-2312"; 
    } 
); 
H =  (
      { 
     firstName = Danny; 
     kind = Mobile; 
     lastName = Huang; 
     name = "Danny Huang (Mobile)"; 
     number = "(408) 599-9770"; 
    }, 
      { 
     firstName = Ice; 
     kind = Mobile; 
     lastName = Huang; 
     name = "Ice Huang (Mobile)"; 
     number = "(408) 444-4444"; 
    } 
); 
K =  (
      { 
     firstName = Will; 
     kind = Mobile; 
     lastName = King; 
     name = "Will King (Mobile)"; 
     number = "(415) 123-4567"; 
    } 
); 
L =  (
      { 
     firstName = ""; 
     kind = iPhone; 
     lastName = LastName; 
     name = " LastName (iPhone)"; 
     number = "(408) 123-2555"; 
    }, 
      { 
     firstName = david; 
     kind = Mobile; 
     lastName = lub; 
     name = "david lub (Mobile)"; 
     number = "(666) 666-1111"; 
    } 
); 
P =  (
      { 
     firstName = Jennifer; 
     kind = Mobile; 
     lastName = Pie; 
     name = "Jennifer Pie (Mobile)"; 
     number = "(666) 666-6666"; 
    } 
); 
S =  (
      { 
     firstName = Martin; 
     kind = Mobile; 
     lastName = Shen; 
     name = "Martin Shen (Mobile)"; 
     number = "(415) 333-1234"; 
    }, 
      { 
     firstName = Francis; 
     kind = Mobile; 
     lastName = Shung; 
     name = "Francis Shung (Mobile)"; 
     number = "(408) 345-6789"; 
    } 
); 
V =  (
      { 
     firstName = Brian; 
     kind = Mobile; 
     lastName = Vu; 
     name = "Brian Vu (Mobile)"; 
     number = "(408) 234-5678"; 
    } 
); 
Y =  (
      { 
     firstName = Qiu; 
     kind = Mobile; 
     lastName = Yang; 
     name = "Qiu Yang (Mobile)"; 
     number = "(408) 567-8901"; 
    } 
); 
Z =  (
      { 
     firstName = Joy; 
     kind = Mobile; 
     lastName = Zhou; 
     name = "Joy Zhou (Mobile)"; 
     number = "(408) 765-4321"; 
    } 
); 
"_" =  (
      { 
     firstName = FirstName; 
     kind = Mobile; 
     lastName = ""; 
     name = "FirstName (Mobile)"; 
     number = "1 (408) 234-5141"; 
    } 
); 

}記錄這樣

2012-04-26 16:14:05.195 UpOut[2693:15803] (
L, 
Y, 
V, 
"_", 
Z, 
S, 
K, 
C, 
P, 
H 

我的問題是,爲什麼犯規將其記錄「C 「首先,但是侮辱廣告它記錄「L」

+1

你不說,最後的日誌是什麼日誌。它是臨時的嗎?如果是這樣,它不會被排序,因爲字典中的鍵的順序不一定(或者甚至通常)與您添加鍵的順序相同。另外,不要通過調用字典letterArray來迷惑自己。 – rdelmar 2012-04-26 23:47:30

回答

3

字母的答案始終得到更多upvotes:

NSArray *sortedArray = [countArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];