从CSV数据文件创build一个自定义格式的字典数组

我创build了一个iPhone应用程序,它包含一个位置(lat,long,point)的字典数组。 我通过手动input每个值来创build数组。

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文件获取数据编程创build此数组。 我有一个.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中直接读取来创buildmyLocationArray(具有如图所示的格式)。 我不熟悉代码来实现这一点,真的很欣赏一些方向。

另外,如果数据是通过文本文件而不是csv提供的,它会有什么不同吗?

尝试

 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文件

答案灵感来自

csv文件是一个纯文本文件。 为了达到你想要的效果,你可以使用NSScannerNSString componentsSeparatedByString: NSScanner NSString componentsSeparatedByString:其他的都很简单。

答案由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]; 

}