基于姓氏排序 - 空异常

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,如果它太短则替换为其他已知值,以便将所有空的姓氏组合在一起。