我正在尝试基于字母在表视图中创建节,并在这些节下按字母顺序排序我的条目。
我已经收集了bandsArray中每个条目的第一个字母,并且现在正在尝试使用NSPredicate来计算每个字母有多少个条目。
我正在遵循这个指南进行操作。
他们正在使用NSArray,而我正在使用NSDictionary,似乎无法使其工作。有人能帮我吗?
当尝试显示包含表视图的视图时,应用程序会崩溃。在调试器控制台中显示以下错误:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Can't do a substring operation with something that isn't a string'
这是我的代码:
我已经收集了bandsArray中每个条目的第一个字母,并且现在正在尝试使用NSPredicate来计算每个字母有多少个条目。
我正在遵循这个指南进行操作。
他们正在使用NSArray,而我正在使用NSDictionary,似乎无法使其工作。有人能帮我吗?
当尝试显示包含表视图的视图时,应用程序会崩溃。在调试器控制台中显示以下错误:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Can't do a substring operation with something that isn't a string'
这是我的代码:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSString *alphabet = [bandsArrayIndex objectAtIndex:section];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] %@", alphabet];
NSArray *letters = [bandsArray filteredArrayUsingPredicate:predicate];
return [letters count];
}
编辑:这是我的bandsArray。
标题
NSMutableArray *bandsArray;
@property (nonatomic, retain) NSMutableArray* bandsArray;
实现
// set array from plist
NSString *path = [[NSBundle mainBundle] pathForResource:@"Bands" ofType:@"plist"];
NSMutableArray* tmpArray = [[NSMutableArray alloc] initWithContentsOfFile:path];
self.bandsArray = tmpArray;
// sort array after name ascending
NSSortDescriptor *nameSorter = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)];
[bandsArray sortUsingDescriptors:[NSArray arrayWithObject:nameSorter]];
bandsArray
时,你像漏勺一样泄露内存。 - Dave DeLong