
рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдПрдХ рдХрд╛рд░реНрдп рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ - рдЖрд╡реЗрджрди рдореЗрдВ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдЬрд╛рдирдХрд╛рд░реА рдЦреЛрдЬ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрд░реНрдерд╛рддреН, рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдгреЛрдВ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдПрдХ SQLite рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рд╕рдмрдХреБрдЫ рдареАрдХ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЦреЛрдЬ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдПрдХ рдордЬрдмреВрдд рдЗрд░рд╛рджреЛрдВ рд╡рд╛рд▓рд╛ рдирд┐рд░реНрдгрдп рдмрд╛рд╣рд░реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЕрдкрдиреЗ рджрдо рдкрд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рдЦреЛрдЬ рд╕реНрдЯреНрд░рд┐рдВрдЧ
UISearchBar рд╣реИ ред рдкрд░рд┐рдгрд╛рдо рдПрдХ рдирд┐рдпрдорд┐рдд
UITableView рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде, рдкрд╛рда рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЪрд┐рддреНрд░ рд╕рд╣рд┐рдд)ред
рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдПрдХ рдкрд╛рда рдкрд░рд┐рд╡рд░реНрддрди рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рд╣реИ:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { _data = [SBHotspotData findHotspot:searchText]; [self.searchResultsTableView reloadData]; }
рдЬрд╣рд╛рдВ _data рдПрдХ NSArray рд╣реИ рдЬреЛ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИредрдЗрд╕ рд╕реНрддрд░ рдкрд░, рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдИ - рдЦреЛрдЬ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рднреА рдирд╛рдореЛрдВ рдореЗрдВ, рдЕрдкрд░рдХреЗрд╕ рдФрд░ рд▓реЛрдЕрд░рдХреЗрд╕ рдЕрдХреНрд╖рд░ рджреЛрдиреЛрдВ рд╣реИрдВ, рдЬреЛ SQLite рднрд┐рдиреНрди рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░
рдирд┐рдЪрд▓реЗ () рдФрд░
рдКрдкрд░реА () рдХрд╛рд░реНрдп, SQL рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдХрдо рд╕реЗ рдХрдо рдкреНрд░рддрд┐рд░реЛрдз рд╕реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдХреЙрд▓рдо рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЬреЛ рд╕рднреА рд╕рдорд╛рди рд╣реЗрдбрд░ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рдЪрд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд▓рдЧрднрдЧ рдЕрдЧреЛрдЪрд░ рдереАред рдЦреЛрдЬ рд╡рд┐рдзрд┐ (FMDatabase рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ):
+ (NSArray *) findHotspot: (NSString *)partOfTitle { SBHotspotData *item; NSMutableArray *result = [NSMutableArray array]; NSString *path = [self getDatabasePath]; FMDatabase *database; database = [FMDatabase databaseWithPath:path]; [database open]; NSString *query = [NSString stringWithFormat:@"select * from hotspots where TitleLow like '%%%@%%'", [partOfTitle lowercaseString]]; FMResultSet *results = [database executeQuery:query]; while([results next]) { item = [[SBHotspotData alloc ]init]; item.hotspotIdentity = [results stringForColumn:@"Identity"]; item.hotspotTitle = [results stringForColumn:@"Title"]; item.hotspotDescription = [results stringForColumn:@"Description"]; [result addObject:item]; } [database close]; return [result sortedArrayUsingSelector:@selector(compare:)]; } - (NSComparisonResult)compare:(SBHotspotData *)otherObject { return [self.hotspotTitle compare:otherObject.hotspotTitle]; }
рдХреНрд╡реЗрд░реА рдмрдирд╛рддреЗ рд╕рдордп,
%%% @ %% рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рдЬрд╣рд╛рдБ рдкреНрд░рддрд┐рд╢рдд рд╕рдВрдХреЗрдд рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдИ рднреА рд╡рд░реНрдг рд░реЗрдЦрд╛ рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рдзрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╡рд░реНрдгреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИ, рд╡рд░реНрдгрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдХреНрд░рдордмрджреНрдзред
рдХрд╛рд░реНрдп рдХрд╛ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣рд┐рд╕реНрд╕рд╛ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдП рдЧрдП рдкрд╛рддреНрд░реЛрдВ рдХрд╛ рдореБрдЦреНрдп рдЖрдХрд░реНрд╖рдг рд╣реИред рдЗрд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:item.hotspotTitle]; NSRange range = [item.hotspotTitle rangeOfString:_searchHotspotBar.text]; [attributedString addAttribute:NSBackgroundColorAttributeName value:[UIColor colorWithRed:216/255.0f green:87/255.0f blue:23/255.0f alpha:1.0f] range:range]; cell.cellLabel.attributedText = attributedString;
NSMutableAttributedString рдФрд░ рдЗрд╕рдХреА
addAttribute: рдорд╛рди: рд╢реНрд░реЗрдгреА: рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдЫ рд╡рд░реНрдгреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЦреИрд░, рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдкрд░рд┐рдгрд╛рдо:

рдХрд╛рд░реНрдп рдХрд╛рдлреА рддреБрдЪреНрдЫ рд╣реЛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ, рдкреНрд░рд╛рдкреНрдд рдЕрдиреБрднрд╡ Habrovsk рдирд╛рдЧрд░рд┐рдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред