9

我有一个NSMutableArray (_theListOfAllQuestions)我正在填充文件中的数字。然后我将该数组中的对象与我进行了比较qNr (NSString),我得到了错误。我什至将数组转换为另一个NSString_checkQuestions只是为了确保我在比较NSStrings。我也测试了使用 item 进行比较。

-(void)read_A_Question:(NSString *)qNr {
NSLog(@"read_A_Question: %@", qNr);
int counter = 0;
for (NSString *item in _theListOfAllQuestions) {
    NSLog(@"item: %@", item);
    _checkQuestions = _theListOfAllQuestions[counter]; //_checkQuestion = NSString
    NSLog(@"_checkQuestions: %@", _checkQuestions);
    if ([_checkQuestions isEqualToString:qNr]) {
        NSLog(@">>HIT<<");
        exit(0);   //Just for the testing
    }
    counter++;
 }

运行此代码时,我得到以下信息NSLog

read_A_Question: 421
item: 1193
_checkQuestions: 1193

...和错误:

-[__NSCFNumber isEqualToString:]:无法识别的选择器发送到实例 0x9246d80 *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__NSCFNumber isEqualToString:]:无法识别的选择器发送到实例 0x9246d80”

我确实相信我仍在NSString与一些人进行比较,但对我来说,我似乎是在比较NSStringNSString

我真的需要一些帮助来1)理解问题,2)解决问题?

4

2 回答 2

15

替换此行

if ([_checkQuestions isEqualToString:qNr])

 if ([[NSString stringWithFormat:@"%@",_checkQuestions] isEqualToString:[NSString stringWithFormat:@"%@",qNr]])

希望对你有帮助。。

于 2013-01-21T19:31:07.763 回答
2

您的_theListOfAllQuestions数组有NSNumber对象而不是NSString对象。所以不能isEqualToString直接使用。

试试这个,

for (NSString *item in _theListOfAllQuestions) {
    NSLog(@"item: %@", item);
    _checkQuestions = _theListOfAllQuestions[counter]; //_checkQuestion = NSString
    NSLog(@"_checkQuestions: %@", _checkQuestions);
    if ([[_checkQuestions stringValue] isEqualToString:qNr]) {
        NSLog(@">>HIT<<");
        exit(0);   //Just for the testing
    }
    counter++;
 }
于 2013-01-21T19:28:59.997 回答