我知道以前曾经问过这个问题,但我找不到有用的答案。
首先,这是我的代码
// load the .csv file with all information about the track
NSError *error;
NSString *filepath = [[NSBundle mainBundle] pathForResource:@"file" ofType:@"csv" inDirectory:nil];
NSString *datastring1 = [NSString stringWithContentsOfFile:filepath encoding:NSUTF8StringEncoding error:&error];
NSArray *datarow = [datastring1 componentsSeparatedByString:@"\r"];
//fill arrays with the values from .csv file
NSArray *data_seg = [datarow objectAtIndex:0]; //segment number
NSArray *data_slength = [datarow objectAtIndex:1]; //strait length
NSArray *data_slope = [datarow objectAtIndex:2]; //slope
NSArray *data_cradius = [datarow objectAtIndex:3]; //circle radius
NSArray *data_cangle = [datarow objectAtIndex:4]; //circle angle
NSLog(@"%i", [data_seg count]);
好的,所以有代码,我读到这与autorelease有关,但我无法添加像NSArray *data_seg = [[datarow objectAtIndex:0] retain]
当我运行代码时,我得到[__NSCFString count]:无法识别的选择器发送到实例0x9d1ad50
感谢任何帮助,我不擅长编程,而且我很新。
答案 0 :(得分:1)
componentsSeparatedByString方法返回NSString的NSArray。从datarow数组中提取的每个项目都是NSString,而NSString不响应'count'。从// fill数组开始的代码不正确。每个objectAtIndex调用都将返回一个NSString *。
这是另一种说法,即data_seg的数据类型是NSString *(不是NSArray *)。
答案 1 :(得分:0)
使用更正后的代码段,问题是因为data_seg
是字符串,而-count
不是NSString
的方法。您似乎认为data_seg
是NSArray
。
查看-[NSString componentsSeparatedByString:]
的文档并查看它返回的内容 - 字符串!所以你得到一个字符串数组。所以你想要的是:
NSString *data_seg = [datarow objectAtIndex:0]; //segment number
NSLog(@"my segment number is: %@", data_seg);