【发布时间】: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