Лучший способ определить, присутствуют ли City, State и Zip - PullRequest
0 голосов
/ 14 июля 2011

Я сохраняю данные в NSMutableArray

Проблема в том, что ABRecord иногда бывает неполным. Например, я ожидаю, что у пользователя будут следующие данные

First Name
Last Name
Street Address
City
State
Zip
Country

Если город, штат, почтовый индекс отсутствуют, то я потерплю крах. Так есть ли лучший способ проверить?

Вот мой код

- (NSString *)getCityStateAndZip
{
    NSString* temp = [addressArray objectAtIndex:0];
    if (temp != nil) {
        NSArray *listItems = [temp componentsSeparatedByString:@","];
        NSMutableArray* tempArray = [NSMutableArray arrayWithArray:listItems];
        [tempArray removeObjectAtIndex:0];
        if ([tempArray count] > 2) {
            [tempArray removeObjectAtIndex:3];
        }
        temp = @"";
        for (NSString* element in tempArray) {
            if (element != nil) {
                //NSLog(@"%@", element);
                if ([element isEqualToString:@"(null)"]) {
                    NSLog(@"record has a null entry");
                }
                temp = [temp stringByAppendingString:element];
                temp = [temp stringByAppendingString:@", "];
            }
        }
        if ([temp length] > 1) {
            temp = [temp substringToIndex:[temp length] -2];
        }
    }
    return temp;
}

Вот «po tempArray» перед тем, как мы начнем удалять элементы.

(gdb) po tempArray
<__NSArrayM 0x5a6ee20>(
1 Main Street ,
Trenton ,
NJ ,
08601 ,
United States
)

Спасибо

Если у вас есть лучший способ справиться с этим, я хотел бы знать.

Линия, которая вылетает из приложения,

[tempArray removeObjectAtIndex:3];

Я знаю, почему он падает. Если город, штат, почтовый индекс отсутствуют, то он не может удалить элемент, если массив меньше 4.

1 Ответ

2 голосов
/ 14 июля 2011

Пока вы ищете лучшее более постоянное решение, и если я не пропущу что-то в вашем коде, разве это не остановит сбой?

    if ([tempArray count] > 3) {
        [tempArray removeObjectAtIndex:3];
    }
...