确定City,State和Zip是否存在的最佳方法

时间:2011-07-13 22:51:40

标签: ios4 nsmutablearray abaddressbook

我将数据存储到NSMutableArray

问题在于ABRecord有时不完整。例如,我希望用户拥有以下数据

First Name
Last Name
Street Address
City
State
Zip
Country

如果City,State,Zip丢失,那么我崩溃了。那么有更好的方法来检查吗?

这是我的代码

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

我知道它崩溃的原因。如果缺少city,state,zip,则如果数组小于4,则无法删除该项。

1 个答案:

答案 0 :(得分:2)

当您搜索更好的更永久的解决方案时,除非我在代码中遗漏了某些内容,否则这至少会阻止崩溃?

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