ユーザー入力をデータベース レコードと比較するカスタム UITextField を作成しました。私がすでに何かを提案した後、ユーザーがテキストフィールドにスペースを入れるまで、すべてがうまく機能します。次のメッセージでアプリがクラッシュします。
キャッチされていない例外 'NSRangeException' が原因でアプリを終了しています。理由: ' * -[__NSCFConstantString substringToIndex:]: 範囲またはインデックスが範囲外です'
コードは次のとおりです。
NSRange cursorRange = [[self valueForKey:@"selectionRange"] rangeValue];
NSString *entered = [self.text substringToIndex:cursorRange.location];
if (![self.text isEqualToString:entered]) {
self.text = entered;
return;
}
NSString *suggestedSuffix;
for (NSString *name in filterData) {
if (name.length > cursorRange.location && [[name lowercaseString] hasPrefix:entered]) {
suggestedSuffix = [name substringFromIndex:cursorRange.location];
NSMutableString *suggestedString = [[NSMutableString alloc] initWithString:entered];
[suggestedString appendString:suggestedSuffix];
self.text = suggestedString;
[self setValue:[NSValue valueWithRange:cursorRange] forKey:@"selectionRange"];
return;
}
}
}