NSString не отображается правильно при загрузке данных из CSV-файла в XCode - PullRequest
0 голосов
/ 26 января 2011

У меня есть CSV-файл, в котором хранятся 3 значения - название города вместе с названием штата, значениями долготы и широты.

Примерные данные, которые отображаются при открытии с помощью Excel, будут такими: Бостон, Массачусетс., 411.932, 73

Первая проблема, с которой я сталкиваюсь, заключается в том, что когда я копирую файл csv в папку проекта xcode, xcode отображает данные файла как «Albany, NY», 397.898,73, добавляя «» кпервый столбец данных.

Вторая проблема, с которой я сталкиваюсь, заключается в том, что когда я извлекаю данные из файла csv и задаю название города в виде строки NSSt, строка показывает только Олбани, а не Олбани, Нью-Йорк

Вот чтоЯ сделал.Спасибо за вашу помощь.

NSString* filePath = [[NSBundle mainBundle] pathForResource:@"citiesdataUsed" ofType:@"csv"];
NSString* fileContents =  [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
[NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];

NSArray* pointStrings = [fileContents componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
cityList = [[NSMutableArray alloc]init];

//skip line 0 as it is the title of each column
for(int idx = 0; idx < pointStrings.count; idx++)
{
    Pair *sth = [[Pair alloc] init];
    // break the string down even further to the columns. 
    NSString* currentPointString = [pointStrings objectAtIndex:idx];
    NSArray* arr = [currentPointString componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@","]];

    NSString *country = [[NSString alloc] initWithFormat:@"%@", [arr objectAtIndex:0]];
    NSNumber *latData = [[NSNumber alloc]  initWithFloat:[[arr objectAtIndex:2] floatValue]]; //long
    NSNumber *longData = [[NSNumber alloc]  initWithFloat:[[arr objectAtIndex:1] floatValue]]; //lat

    //convert the NSNumbers to float value
    float longData2 = [longData floatValue];
    float latData2 = [latData floatValue];
    CGPoint temp = CGPointMake(longData2,latData2);
    sth.city = country;
    sth.location = temp;
    [cityList addObject: sth];
    [sth release];
}

1 Ответ

0 голосов
/ 26 января 2011

Что касается разбора вашей страны только на первую часть ..

Вы разделяете строку на ,, поэтому ваш массив будет выглядеть как

arr[0] = Albany
arr[1] = N.Y.
arr[2] = 397.898
arr[3] = 73

Ваш код должен отображаться как

NSString *country = [[NSString alloc] initWithFormat:@"%@, %@", [arr objectAtIndex:0], [arr objectAtIndex:1]];
NSNumber *latData = [[NSNumber alloc]  initWithFloat:[[arr objectAtIndex:2] floatValue]]; //long
NSNumber *longData = [[NSNumber alloc]  initWithFloat:[[arr objectAtIndex:3] floatValue]]; //lat

Не совсем уверен, почему xcode включает кавычки в ваш CSV-файл, но если кавычки отображаются только в xcode, а не в (например) textedit, ваш файл будет в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...