比较类内部导致错误的方法; NSInvalidArgumentException

时间:2013-11-14 19:30:04

标签: objective-c

好的,所以我正在建立一本书的一致性,一切似乎正常工作,期望我的比较功能要么发现这个词是否已经在我的数组中,我做了一个基本的比较函数,要么返回1,-1或0.我知道有一个NSComparisonResults,但到目前为止我对此更加满意。无论如何,我希望函数将_wordBeingCatalog与我的UniqueWord类中的另一个单词进行比较,这就是我在课堂上所拥有的几乎涉及我的方法

 -(instancetype)initWithString:(NSString*)wordBeingCataloged 
                       andline:(NSNumber*)currentLine
{
    self = [super init];
    if(self == nil) return nil;
    _wordBeingCataloged=wordBeingCataloged;
    _count=0;
    _LinenumberWhereWordisFound= [[NSMutableArray alloc]init];
    [self addALineNumberToCurrentLineNumberArray:currentLine];//This is a function in c++ it looks like addline(currentline); i dont know if i did it right
    return self;

}

-(NSInteger) compareCurrent:(UniqueWord *)word withAnother:(UniqueWord *)text{
  if ([word isGreaterThan:text] )//crashes here
  {
      return 1;
  }

    if([text isGreaterThan:word]){
        return -1;
    }
    return 0;

}

-(void) addALineNumberToCurrentLineNumberArray:(NSNumber *)currentLine{
    NSInteger index=[ self newIndexUsing:currentLine];
    ++_count;
    if(index==-1)
        return;
    [_LinenumberWhereWordisFound insertObject:currentLine atIndex:(0+index)];
}

当我运行我的方法时,我会导致

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-    [UniqueWord compare:]: unrecognized selector sent to instance 0x100201740'

我的信念是,它不是在数组中比较我的两个字符串,而是比较其他内容,有人可以解释我收到的问题。

程序在比较函数

中的第一个if语句处停止

1 个答案:

答案 0 :(得分:0)

您没有列出isGreaterThan:类中UniqueWord函数的内容,但它必须包含对compare:的调用,但未实现。

您可能还需要考虑更改compareCurrent:withAnother:方法以使用常量。

-(NSInteger)compareCurrent:(UniqueWord *)word 
               withAnother:(UniqueWord *)text
{
    if ([word isGreaterThan:text])//crashes here
    {
        return NSOrderedDescending;
    }

    if([text isGreaterThan:word]) 
    {
        return NSOrderedAscending;
    }
    return NSOrderedSame;
}