基于LastName排序 - 空例外

时间:2015-03-04 07:44:06

标签: ios arrays sorting contact

在我的代码中,我使用lastname排序联系人,它显示LastName为null的错误。如何将null lastname排序为哈希符号。

这是我的代码

-(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];
}      

1 个答案:

答案 0 :(得分:1)

你做的每一个地方

[contact.lastName substringToIndex:1];

如果您可能有一个空字符串,则不安全,因为子字符串请求将始终抛出范围异常。您需要更改该代码。

简单的选项是预先检查length,如果它太短,则替换其他已知值,以便将所有空的姓氏组合在一起。