基于姓氏排序 - 空异常
Sort based on LastName - Null exception
在我的代码中,我使用姓氏对联系人进行排序,它显示姓氏错误 null.How 将空姓氏排序为哈希符号。
这是我的代码
-(void)updateView:(NSArray*)contactsArray{
[self.dataArray removeAllObjects];
[self.sections removeAllObjects];
[self.dataArray addObjectsFromArray:contactsArray];
BOOL found;
for (Contact *contact in self.dataArray)
{
NSString *c = [[contact.lastName substringToIndex:1] uppercaseString];
found = NO;
for (NSString *str in [self.sections allKeys])
{
if ([str isEqualToString:c])
{
found = YES;
}
}
if (!found)
{
[self.sections setValue:[[NSMutableArray alloc] init] forKey:c];
}
}
// Loop again and sort the books into their respective keys
for (Contact *contact in self.dataArray)
{
[[self.sections objectForKey:[[contact.lastName substringToIndex:1] uppercaseString]] addObject:contact];
}
// Sort each section array
for (NSString *key in [self.sections allKeys])
{
[[self.sections objectForKey:key] sortUsingDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"lastName" ascending:YES]]];
}
NSLog(@"Check %@",contactsArray);
[self.tableView reloadData];
}
你去的任何地方
[contact.lastName substringToIndex:1];
如果你可能有一个空字符串是不安全的,因为子字符串请求总是会抛出一个范围异常。您需要更改该代码。
简单的选择是事先检查 length
,如果它太短则替换为其他已知值,以便将所有空的姓氏组合在一起。
在我的代码中,我使用姓氏对联系人进行排序,它显示姓氏错误 null.How 将空姓氏排序为哈希符号。
这是我的代码
-(void)updateView:(NSArray*)contactsArray{
[self.dataArray removeAllObjects];
[self.sections removeAllObjects];
[self.dataArray addObjectsFromArray:contactsArray];
BOOL found;
for (Contact *contact in self.dataArray)
{
NSString *c = [[contact.lastName substringToIndex:1] uppercaseString];
found = NO;
for (NSString *str in [self.sections allKeys])
{
if ([str isEqualToString:c])
{
found = YES;
}
}
if (!found)
{
[self.sections setValue:[[NSMutableArray alloc] init] forKey:c];
}
}
// Loop again and sort the books into their respective keys
for (Contact *contact in self.dataArray)
{
[[self.sections objectForKey:[[contact.lastName substringToIndex:1] uppercaseString]] addObject:contact];
}
// Sort each section array
for (NSString *key in [self.sections allKeys])
{
[[self.sections objectForKey:key] sortUsingDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"lastName" ascending:YES]]];
}
NSLog(@"Check %@",contactsArray);
[self.tableView reloadData];
}
你去的任何地方
[contact.lastName substringToIndex:1];
如果你可能有一个空字符串是不安全的,因为子字符串请求总是会抛出一个范围异常。您需要更改该代码。
简单的选择是事先检查 length
,如果它太短则替换为其他已知值,以便将所有空的姓氏组合在一起。