Question

I would like to show an index bar on my tableview with all my songs sorted by alphabetical order and those foreign language songs in # just like how the iPod music in iOS do it.
However i gotten an error

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[LibraryViewController partitionSongObjects:collationStringSel:]: unrecognized selector sent to instance 0x1454be90'

any comments are greatly appreciated thanks.

//viewDidLoad

 [[MediaService sharedService]getAllSongsItemInSongs:^(NSArray *data) {
    self.songArray = [[NSMutableArray alloc]initWithArray:data];
    }];

    NSMutableArray *songNameArray = [NSMutableArray array];

    for (Song *songNameItem in self.songArray)
    {
        [songNameArray addObject:songNameItem.songName];
    }
    self.sectionArray = [self partitionSongObjects:songNameArray collationStringSel:@selector(songName)];
    [self.songLibraryTableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];


- (NSMutableArray *)partitionObjects:(NSArray *)array collationStringSelector:(SEL)selector
{
    self.collation = [UILocalizedIndexedCollation currentCollation];
    NSInteger sectionCount = [[self.collation sectionTitles] count];
    NSMutableArray *unsortedSections = [NSMutableArray arrayWithCapacity:sectionCount];

    for(int i = 0; i < sectionCount; i++)
        [unsortedSections addObject:[NSMutableArray array]];

    for (id object in array)
    {
        NSInteger index = [self.collation sectionForObject:object collationStringSelector:selector];
        [[unsortedSections objectAtIndex:index] addObject:object];
    }

    NSMutableArray *sections = [NSMutableArray arrayWithCapacity:sectionCount];

    for (NSMutableArray *section in unsortedSections)
        [sections addObject:[self.collation sortedArrayFromArray:section collationStringSelector:selector]];

    return sections;
}
Was it helpful?

Solution

you have a simple mistyping method name you call: [self partitionSongObjects:songNameArray collationStringSel:@selector(songName)] whereas you probably should: [self partitionSongObjects:songNameArray collationStringSelector:@selector(songName)]

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top