Skip to content

Instantly share code, notes, and snippets.

@vickeryj
Created September 4, 2012 16:44
Show Gist options
  • Save vickeryj/3623319 to your computer and use it in GitHub Desktop.
Save vickeryj/3623319 to your computer and use it in GitHub Desktop.
contact search
- (NSArray *)searchForContacts:(NSString *)searchString {
NSArray *searchWords = [searchString componentsSeparatedByString:@" "];
NSMutableString *query = [NSMutableString stringWithString:selectColumnsClause];
[query appendString:@"WHERE "];
BOOL isFirst = YES;
NSMutableArray *arguments = [NSMutableArray array];
for (NSString *word in searchWords) {
if ([word length] > 0) {
NSString *searchWord = [word lowercaseString];
if (!isFirst) {
[query appendString:@" AND "];
}
else {
isFirst = NO;
}
NSArray *fields = [NSArray arrayWithObjects:@"first_name", @"last_name", @"company", @"job_title", nil];
[query appendString:@"("];
for (NSString *field in fields) {
[query appendString:[NSString stringWithFormat:@"(lower(%@) >= ? AND lower(%@) < ?||'z') OR ", field, field]];
[arguments addObject:searchWord];
[arguments addObject:searchWord];
}
[query replaceCharactersInRange:NSMakeRange([query length] - 4, 4) withString:@")"];
}
}
[query appendString:@" ORDER BY lower(last_name) LIMIT 5"];
__block NSArray *contacts;
[[DBManager sharedInstance] runDBCommands:^(FMDatabase *db) {
FMResultSet *rs = [db executeQuery:query withArgumentsInArray:arguments];
contacts = [self contactsFromRS:rs];
}];
return contacts;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment