【问题标题】:Sorting array from CSV file从 CSV 文件中排序数组
【发布时间】:2014-06-11 09:02:12
【问题描述】:

我有一个 CSV 文件,我已将其解析到我的 xcode 项目中。

CSV 文件是随机排序的,我希望最小的数字排在第一位。

我不断收到警告说“不兼容的指针类型从 'NSArray *' 分配给 'NSMutableArray *'?我认为这与我尝试对常规数组和可变数组进行排序有关? 这是我解析 CSV 文件的代码:

NSString *hejhej = [[NSBundle mainBundle] pathForResource:@"2" ofType:@"csv"];
NSString *nyt = [NSString stringWithContentsOfFile:hejhej encoding:NSUTF8StringEncoding error:nil];
NSString *nytnyt = [nyt stringByReplacingOccurrencesOfString:@"\"" withString:@""];


NSMutableArray *row= [[nytnyt componentsSeparatedByString:@"\n,"]mutableCopy];
NSMutableArray *data = [NSMutableArray array];
for(NSString *line in row){
    NSMutableArray *points = [[line componentsSeparatedByString:@","] mutableCopy];

当我将它拖放到我的项目中时,我的文件看起来像这样(这只是测试数据):

"""00.52.36"",""5"""
,"""01.22.55"",""54"""
,"""01.14.54"",""8"""
,"""02.43.54"",""32"""
,"""03.43.02"",""11"""
,"""03.14.11"",""1"""
,"""06.23.32"",""15"""
,"""06.54.43"",""7"""
,"""07.32.12"",""2"""
,"""07.45.45"",""22"""
,"""08.11.22"",""43"""
,"""08.45.43"",""9"""
,"""09.00.11"",""222"""
,"""09.44.32"",""43"""
,"""10.21.34"",""321"""
,"""10.44.22"",""55"""
,"""11.01.02"",""21"""

我想先按最小值排序。所以它应该切换第 2 行和第 3 行,以及第 5 和 6 行。

我正在使用这段代码排序,但它不起作用?

NSSortDescriptor *sd = [[NSSortDescriptor alloc] initWithKey:nil ascending:YES];
points = [points sortedArrayUsingDescriptors: @[sd]];

【问题讨论】:

  • sortedArrayUsingDescriptors 返回一个NSArray*,然后将其分配给points,即NSMutableArray*。这就是你收到警告的原因。例如,如果稍后您尝试在 points 上调用 addObject:,假设它是一个可变数组,您会收到运行时错误,因为尽管 points 被声明为可变数组,但实际上它是一个不可变的数组。

标签: ios objective-c arrays sorting csv


【解决方案1】:
猜你喜欢
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 2012-07-23
  • 2019-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多