-3

場所 (lat、long、point) の辞書配列を持つ iPhone アプリを作成しました。各値を手動で入力して配列を作成しました。

myLocationArray = @[
                 @{
                   kStation : @"1",
                   kLatitude : @( 41.656467),
                   kLongitude : @(-81.277963)
                   },
                 @{
                   kStation : @"2",
                   kLatitude : @(41.657118),
                   kLongitude : @(-81.276545)
                   },
                 @{
                   kStation : @"3",
                   kLatitude : @(41.658493),
                   kLongitude : @(-81.273542)
                   },
                  ...

これはうまく機能しますが、.CSV ファイルからデータを取得して、この配列をプログラムで作成したいと考えています。このような .CSV ファイル (TestCSV.csv) があります。

41.656467,-81.277963,27200
41.657118,-81.276545,27650
41.658493,-81.273542,28631.5
41.660728,-81.268547,30195
41.661830,-81.266065,30991
41.662828,-81.263819,31700
41.663677,-81.261962,32300
41.664578,-81.259909,32950
41.666210,-81.256312,34100
41.666921,-81.254708,34605
41.668043,-81.252191,35400
41.669044,-81.250043,36099
41.670120,-81.247495,36900
41.670778,-81.245957,37380
41.671459,-81.244292,37905
41.672028,-81.242832,38349
41.672487,-81.241702,38700
41.673106,-81.240175,39175
41.674364,-81.237007,40150
41.675170,-81.235038,40762.5
41.675716,-81.233698,41182
41.676143,-81.232614,41516

具体的には、TestCSV.csv から直接読み取って、myLocationArray (示されている書式設定) を作成したいと考えています。私はこれを達成するためのコードに精通していないので、何らかの方向性を本当に感謝しています.

また、データがcsvではなくテキストファイルで提供された場合、それは何か違うか、より簡単になりますか?

4

3 に答える 3

1

Anupdas が提供する回答。乾杯!

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

NSArray *locations = [csvString componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];

NSMutableArray *locationsArray = [NSMutableArray array];
for (NSString * location in locations)
{

NSArray *components = [location componentsSeparatedByString:@","];

double latitude   = [components[0] doubleValue];
double longitude  = [components[1] doubleValue];
NSString *station =  components[2];

NSDictionary *dict = @{@"kLatitude": @(latitude),
                       @"kLongitude": @(longitude),
                       @"kStation": station};

[locationsArray addObject:dict];

}

于 2013-05-14T01:06:51.813 に答える
1

csv ファイルはプレーンテキスト ファイルです。あなたが望むものを達成するためにあなたが使うことができNSScanner、他のNSString componentsSeparatedByString:すべては本当に簡単です.

于 2013-05-11T16:21:18.980 に答える