今天,我收到isEqualToString
方法的随机崩溃,该方法与UISearchBar
的文字属性一起使用。据Crashlytics报道了这起事故。
以下是代码段。
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
if( [searchBar.text isEqualToString:@" "] )
{
[searchBar setText:@""];
}
if ( searchBar.text.length >= 2 )
{
[self performSelectorInBackground:@selector(searchForKeyword:) withObject:searchBar.text];
}
}
-(void)searchForKeyword:(NSString *)keyword
{
if ([keyword isEqualToString:searchBar.text])
{
//Search for keyword
}
}
崩溃说
Fatal Exception: `NSRangeException`
*** -[NSBigMutableString _newBigSubstringWithRange:wantsMutable:zone:]: Range {0, 4} out of bounds; string length 3
我已经尝试调试导致崩溃的代码行,但没有成功。它只是随机崩溃。 提前致谢
答案 0 :(得分:1)
错误是由于:您在
中设置搜索栏文本- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
您应该使用以下方法而不是您使用的方法。
- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text NS_AVAILABLE_IOS(3_0); // called before text changes