Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 将表视图转换为具有节_Iphone_Ios_Uitableview_Ios4_Nsarray - Fatal编程技术网

Iphone 将表视图转换为具有节

Iphone 将表视图转换为具有节,iphone,ios,uitableview,ios4,nsarray,Iphone,Ios,Uitableview,Ios4,Nsarray,我有一个表视图,它的数据源来自一个包含人名的数组 现在,为了便于查找联系人,我想对表视图进行分区,使其右侧有字母A-Z,就像通讯簿应用程序一样 但我当前的数组只包含一组NSString。我如何拆分它们,以便按名称的第一个字母对它们进行分组?有什么方便的方法吗 编辑:如果有人对我的最终代码感兴趣: NSMutableArray *arrayChars = [[NSMutableArray alloc] init]; for (char i = 'A'; i <= 'Z' ; i++) {

我有一个表视图,它的数据源来自一个包含人名的数组

现在,为了便于查找联系人,我想对表视图进行分区,使其右侧有字母A-Z,就像通讯簿应用程序一样

但我当前的数组只包含一组NSString。我如何拆分它们,以便按名称的第一个字母对它们进行分组?有什么方便的方法吗

编辑:如果有人对我的最终代码感兴趣:

NSMutableArray *arrayChars = [[NSMutableArray alloc] init];

for (char i = 'A'; i <= 'Z' ; i++) {
    NSMutableDictionary *characterDict = [[NSMutableDictionary alloc]init];
    NSMutableArray *tempArray = [[NSMutableArray alloc] init];

    for (int k = 0; k < [myList count]; k++) {

        NSString *currentName = [[friends objectAtIndex:k] objectForKey:@"name"];
        char heading = [currentName characterAtIndex:0];
        heading = toupper(heading);

        if (heading == i) {
            [tempArray addObject:[friends objectAtIndex:k]];
        }
    }
    [characterDict setObject:tempArray forKey:@"rowValues"];
    [characterDict setObject:[NSString stringWithFormat:@"%c",i] forKey:@"headerTitle"];
    [arrayChars addObject:characterDict];

    [characterDict release];
    [tempArray release];
}

谢谢大家的帮助

您可以使用字典对它们进行排序,因此创建一个包含所有要排序的字母的数组,以及一个包含nil对象的数组来初始化字典

NSArray *names = @[@"javier",@"juan", @"pedro", @"juan", @"diego"];
NSArray *letters = @[@"j", @"p", @"d"];
NSMutableArray *objects = [[NSMutableArray alloc] init];

for (NSInteger i = 0; i < [letters count]; ++i)
{
    [objects addObject:[[NSMutableArray alloc] init]];
}

NSDictionary *dictionary = [[NSDictionary alloc] initWithObjects:objects forKeys:letters];
for (NSString *name in names) {
    NSString *firstLetter = [name substringToIndex:1];

    for (NSString *letter in letters) {
        if ([firstLetter isEqualToString:letter]) {
            NSMutableArray *currentObjects = [dictionary objectForKey:letter];
            [currentObjects addObject:name];
        }
    }

}
要检查,您可以直接打印字典

NSLog(@"%@", dictionary);
然后是使用字典在tableview中填充部分的工作

NSLog(@"%@", dictionary);