Search code examples
iosiphonesortingcrashaddressbook

ABRecordCopyCompositeName and CFBridgingRelease crash issue


I am developing IOS application using AddressBook.

Here is my code what I used.

I am getting crash issue on substringWithRange function.

What is the crash reason?

Thank you.

NSString * sort_name = CFBridgingRelease(ABRecordCopyCompositeName(person));
if (sort_name != nil) {
    [self Make_Sorting_Name:sort_name];


- (NSDictionary *)Make_Sorting_Name:(NSString *)sort_name {

            NSString * sort_char = [[NSString stringWithString:[sort_name substringWithRange:NSMakeRange(0, 1)]] uppercaseString];

            NSCharacterSet *nonDigits = [NSCharacterSet letterCharacterSet];
            BOOL containsNonDigitChars = ([sort_char rangeOfCharacterFromSet:nonDigits].location == NSNotFound);            

        }

Solution

  • The ABRecordCopyCompositeName function might return nil or empty string sometimes. So the case needs to be checked:

    NSString *sort_char = @""; //or another specific character for sorting
    if (sort_name != nil && sort_name.length > 0){
        sort_char = [[NSString stringWithString:[sort_name substringWithRange:NSMakeRange(0, 1)]] uppercaseString];
    }