さて、私は本のコンコーダンスを構築していますが、すべてが正しく機能しているようです。比較関数が単語が既に配列にあるかどうかを確認することを期待して、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'
私の考えでは、配列内の 2 つの文字列を比較するのではなく、他の何かを比較しています。誰かが私が受けている問題を説明してください。
ところで、プログラムは比較関数の最初の if ステートメントで停止します