Проблема установки массива obj-c с компонентамиSeperatedByString - PullRequest
1 голос
/ 10 апреля 2010

У меня есть источник данных с примерно 2000 строками, которые выглядят следующим образом:

6712, Аэропорт Анактувук Пасс, Анактувук Пасс, США, AKP, PAKP, 68.1336, -151.743,2103, -9, A

Что меня интересует, так это 6-й раздел этой строки, поэтому я хочу превратить его в массив, а затем проверить 6-й раздел [5] на наличие этой строки "PAKP"

Код:

NSBundle *bundle = [NSBundle mainBundle];
    NSString *airportsPath = [bundle pathForResource:@"airports" ofType:@"dat"];
    NSData *data = [NSData dataWithContentsOfFile:airportsPath];

    NSString *dataString = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];

NSArray *dataArray = [dataString componentsSeparatedByString:@"\n"];
    NSRange locationOfAirport;
    NSString *workingString = [[NSString alloc]initWithFormat:@""];
    NSString *searchedAirport = [[NSString alloc]initWithFormat:@""];
    NSString *airportData = [[NSString alloc]initWithFormat:@""];

    int d;

    for (d=0; d < [dataArray count]; d=d+1) {
        workingString = [dataArray objectAtIndex:d];
            testTextBox = workingString; //works correctly
        NSArray *workingArray = [workingString componentsSeparatedByString:@","];
            testTextBox2 = [workingArray objectAtIndex: 0]; //correctly displays the first section "6712"
            testTextBox3 = [workingArray objectAtIndex:1] //throws exception index beyond bounds
        locationOfAirport = [[workingArray objectAtIndex:5] rangeOfString:@"PAKP"];


    }

проблема в том, что когда заполняется workingArray, он заполняется только одним объектом (первым компонентом строки, который равен «6712». Если он отображает workingString, он правильно отображает всю строку, но для некоторых причина, это не правильно делает массив, используя запятые.

Я попробовал его, не используя файл данных, и он работал нормально, поэтому проблема заключается в том, как я импортирую данные.

идеи?

Ответы [ 2 ]

2 голосов
/ 10 апреля 2010

Ваш код работает. Вы должны запустить его с отладчиком, чтобы увидеть, что происходит. По-видимому, ваши входные данные не соответствуют вашим ожиданиям - возможно, другая кодировка или разные окончания строк.

См. Образец:

NSString *dataString = @"6712,Anaktuvuk Pass Airport,Anaktuvuk Pass,United States,AKP,PAKP,68.1336,-151.743,2103,-9,A";
NSArray *dataArray = [dataString componentsSeparatedByString:@"\n"];
for (NSString *workingString in dataArray) {
    NSString *testTextBox = workingString; //works correctly
NSArray *workingArray = [workingString componentsSeparatedByString:@","];
    NSString *testTextBox2 = [workingArray objectAtIndex: 0]; //correctly displays the first section "6712"
    NSString *testTextBox3 = [workingArray objectAtIndex:1]; //throws exception index beyond bounds
NSRange locationOfAirport = [[workingArray objectAtIndex:5] rangeOfString:@"PAKP"];
}
0 голосов
/ 10 апреля 2010

В данных возникла проблема, в которой было несколько символов "\", вызвавших ошибки.

...