0

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

     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 样式的数组中,而我没有如何在 Objective C 中做到这一点。我知道你可以使用 NSArray 但这似乎对我不起作用。我如何在目标 c 中做到这一点。我已经通过执行将文件读入 NSString

     anotherLine = [NSString stringWithContentsOfFile:docDirectory encoding:NSStringEncodingConversionAllowLossy error:nil];

//docDirectory 是我的文件所在的位置

如何将此 NSString 放入 4 个单独的数组 (cities[max],countries[max], latitude[max], longitude[max]) 。再说一次,我仍然是目标 c 的初学者,我确实知道一些关于 c++ 的东西,所以我试图让它尽可能接近 c。

4

1 回答 1

-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]];
    }
}];
于 2013-10-02T18:32:08.793 回答