objective-c - 检查多个搜索组合的最佳方法

标签 objective-c algorithm

我制作了一个包含不同搜索组合的应用。

该应用程序有 6 个文本字段,用于输入文本和进行搜索。每个文本字段都用于另一个搜索条件。

搜索前只需填写 1 个文本字段。除此之外,用户可以选择要填写和搜索的文本字段数量。因此有多种可能的搜索组合。

问题是,确定填写哪些文本字段以及如何搜索满足搜索条件的对象的最佳方法是什么。

搜索方法应该遍历一个对象数组(在我的例子中,一个员工对象数组)并检查值是否匹配。

我的目标是限制 if 语句的数量。

更新:

到目前为止,这是我的代码:

-(IBAction)SearchEmployees:(id)sender{

NSString *fullName = [(textfieldName.text)uppercaseString];
NSString *functionName = [(textfieldFunction.text)uppercaseString];
NSString *department = [(textfieldDepartment.text)uppercaseString];
NSString *field = [(textfieldField.text)uppercaseString];
NSString *expertise = [(textfieldExpertise.text)uppercaseString];
NSString *interest = [(textfieldInterest.text)uppercaseString];

NSMutableDictionary *filledTextfields = [NSMutableDictionary dictionary];

if (![fullName isEqualToString:@""]){
    [filledTextfields setObject: fullName  forKey: @"fullName"];
}

if (![functionName isEqualToString:@""]){
    [filledTextfields setObject: functionName  forKey: @"functionName"];
}

if (![department isEqualToString:@""]){
    [filledTextfields setObject: department  forKey: @"department"];
}

if (![field isEqualToString:@""]){
    [filledTextfields setObject: field  forKey: @"field"];
}

if (![expertise isEqualToString:@""]){
    [filledTextfields setObject: expertise  forKey: @"expertise"];
}

if (![interest isEqualToString:@""]){
    [filledTextfields setObject: interest forKey: @"interest"];
}


NSMutableArray *foundEmployee = [[NSMutableArray alloc]init];

 for (id key in filledTextfields)
 {
     NSLog(@"KEY: %@ OBJECT: %@", key, [filledTextfields objectForKey:key]);

     for (Employee *employee in self.employees){    //self.employees is the array to search in
         //do something
     }

 }

最佳答案

我会使用 NSMutableDictionary,将数组的内容添加到字典中,并使用适当的搜索词作为字典的键,然后当你搜索某些东西时,你可以只从文本字段中获取文本, 并执行 [dictionary objectForKey:textfieldText] 它将返回适当的对象,如果该搜索词没有对象则返回 nil。

我不确定您的搜索条件是如何工作的,但这可能有效。

关于objective-c - 检查多个搜索组合的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14769961/

相关文章:

ios - 灵活的宽度限制

algorithm - Matlab中双三次插值的解释?

python - 优化算法以在 python 中的给定 Action 下计算轨道

php - 足球联赛调度算法(同步主/客)

ios - MPMediaQuery 仅返回本地项目

iphone - UITableView 不接受触摸传递

ios - 基于 UITabBarController 的应用程序 : preferred login functionality

java - 在字符串集中搜索字符串排列

java - 硬币算法的复杂性

ios - 将 MKUserTrackingBarButtonItem 移动到导航栏的右侧