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を使用できることは知っていますが、それは私にはうまくいかないようです. どうすればObjective cでこれを行うことができますか. 私はすでにファイルをNSStringに読み込んでいます

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

//docDirectory は私のファイルがある場所です

この NSString を 4 つの個別の配列 (都市 [最大]、国 [最大]、緯度 [最大]、経度 [最大]) に入れるにはどうすればよいですか。繰り返しますが、私はまだ目的の 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 に答える