[__NSCFString count]:无法识别的选择器

时间:2014-01-17 19:52:00

标签: objective-c nsstring unrecognized-selector

我知道以前曾经问过这个问题,但我找不到有用的答案。

首先,这是我的代码

// 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

感谢任何帮助,我不擅长编程,而且我很新。

2 个答案:

答案 0 :(得分:1)

componentsSeparatedByString方法返回NSString的NSArray。从datarow数组中提取的每个项目都是NSString,而NSString不响应'count'。从// fill数组开始的代码不正确。每个objectAtIndex调用都将返回一个NSString *。

这是另一种说法,即data_seg的数据类型是NSString *(不是NSArray *)。

答案 1 :(得分:0)

使用更正后的代码段,问题是因为data_seg是字符串,而-count不是NSString的方法。您似乎认为data_segNSArray

查看-[NSString componentsSeparatedByString:]的文档并查看它返回的内容 - 字符串!所以你得到一个字符串数组。所以你想要的是:

NSString *data_seg = [datarow objectAtIndex:0]; //segment number
NSLog(@"my segment number is: %@", data_seg);