我制作了一个包含不同搜索组合的应用。
该应用程序有 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/