Closed. This question needs to be more focused。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
                        
                        4年前关闭。
                                                                                            
                
        
我有一个名称数组,我想将节标题设为字母,例如A BC。还有索引。用名称数组制作Sections的最有效方法是什么

最佳答案

这是我开发的在NSArray上处理并创建您所关注的NSDictionary的方法。

- (void)viewDidLoad {
    [super viewDidLoad];

    NSMutableArray* internalArray = [NSMutableArray arrayWithObjects:@"abc",@"xyz",@"aa",@"bb", nil];

    NSDictionary* dictStructued = [self sortArrayAndMakeStructur:internalArray];

   NSLog(@"Output : %@",dictStructued.description);

}


这是您的整个方法。

-(NSMutableDictionary*)sortArrayAndMakeStructur:(NSArray*)array{

    NSMutableDictionary* dictIndexes = [[NSMutableDictionary alloc]init];

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

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

        NSString* strName = sortedArray[i];
        if ([[dictIndexes allKeys] containsObject:[[strName substringToIndex:1] uppercaseString]]) {
            NSMutableArray* internalArray = [NSMutableArray arrayWithArray:[dictIndexes valueForKey:[[strName substringToIndex:1] uppercaseString]]];
            [internalArray addObject:strName];

            [dictIndexes setObject:internalArray forKey:[[strName substringToIndex:1] uppercaseString]];
        }
        else{
            NSMutableArray* internalArray = [NSMutableArray arrayWithObjects:strName, nil];

            [dictIndexes setObject:internalArray forKey:[[strName substringToIndex:1] uppercaseString]];

        }

    }

    return dictIndexes;
}


这里节数= [[dictStructued allKeys] count];

行数= [[dictIndexes valueForKey:yourKey] count];

输出:

{
    A =     (
        aa,
        abc
    );
    B =     (
        bb
    );
    X =     (
        xyz
    );
}

10-08 07:43
查看更多