将CSV文件分成单独的数组

时间:2013-10-02 18:13:44

标签: objective-c arrays csv nsstring nsarray

好的,开始我是初学者,所以我还在学习。 所以我有世界城市的这个文件。它看起来像这样:

     City,Country,Latitude,Longitude
     Aberdeen, Scotland,57.15,-2.15
     Adelaide, Australia,-34.91666667,138.6
     Algiers, Algeria,36.83333333,3
     Amsterdam, Netherlands,52.36666667,4.883333333
     Ankara, Turkey,39.91666667,32.91666667
     AsunciÛn, Paraguay,-25.25,-57.66666667
     Athens, Greece,37.96666667,23.71666667
     Auckland, New Zealand,-36.86666667,174.75
     Bangkok, Thailand,13.75,100.5  

我必须把所有这些文件放到单独的并行数组中,我想用纬度和经度来计算距离,这没什么大不了的,我想把它们放到C风格的数组中我不知道如何在目标C中这样做。我知道你可以使用NSArray,但这似乎对我没有用。我怎么能在Objective c中做到这一点。我已经通过

将文件读入NSString
     anotherLine = [NSString stringWithContentsOfFile:docDirectory encoding:NSStringEncodingConversionAllowLossy error:nil];

// docDirectory是我的文件

的地方

如何将此NSString放入4个独立的阵列(城市[max],国家[max],纬度[max],经度[max])。 而且,我仍然是目标c的初学者,我确实知道c ++上的一些东西,所以我试图尽可能接近c。

1 个答案:

答案 0 :(得分:-1)

你可以试试这个:

NSMutableArray* cities = [NSMutableArray array];
NSMutableArray* countries = [NSMutableArray array];
NSMutableArray* latitude = [NSMutableArray array];
NSMutableArray* longitude = [NSMutableArray array];

// read everything from text
NSString* fileContents =
[NSString stringWithContentsOfFile:docDirectory encoding:NSStringEncodingConversionAllowLossy error:nil];

// first, separate by new line
NSArray* allLinedStrings =
[fileContents componentsSeparatedByCharactersInSet:
 [NSCharacterSet newlineCharacterSet]];


[allLinedStrings enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    if (idx > 0) //Ignore first line column header
    {
        NSArray* columnsFile = [((NSString*)obj) componentsSeparatedByString:@","];
        [cities addObject:[columnsFile objectAtIndex:0]];
        [countries addObject:[columnsFile objectAtIndex:1]];
        [latitude addObject:[columnsFile objectAtIndex:2]];
        [longitude addObject:[columnsFile objectAtIndex:3]];
    }
}];