数据创建的CSV文件的自定义词典格式化数组(Create a Custom Formatted Di

2019-09-02 14:52发布

我创建了具有位置字典阵列(纬度,经度,点)的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提供?

Answer 1:

尝试

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];

}

CSV文件

答案灵感来自



Answer 2:

csv文件是一个纯文本文件。 为了更好地实现你想你可以使用什么NSScannerNSString componentsSeparatedByString:一切是真的很简单。



Answer 3:

回答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];

}



文章来源: Create a Custom Formatted Dictionary Array from CSV File of Data