iPhone/iPad中的搜索栏编程

iPhone/iPad中的搜索栏编程,iphone,objective-c,ipad,uisearchbar,uisearchdisplaycontroller,Iphone,Objective C,Ipad,Uisearchbar,Uisearchdisplaycontroller,我有这样的数据…(所有数据来自.plist文件…) 我想在FirstName(key)的基础上实现这个数组中的搜索数据 我能够使用“FirstName(Key)”搜索数据 但是在过滤数据之后,假设我单击了在TableView中显示的行(在数据中)。它将我导航到新的控制器,其中包含该特定员工的所有信息(例如:FirstName、LastName、EmpCode) 我怎样才能得到信息 当我浏览搜索示例代码时 这是我的搜索码 NSString *searchText = searchBar.text;

我有这样的数据…(所有数据来自.plist文件…)

我想在FirstName(key)的基础上实现这个数组中的搜索数据

我能够使用“FirstName(Key)”搜索数据

但是在过滤数据之后,假设我单击了在TableView中显示的行(在数据中)。它将我导航到新的控制器,其中包含该特定员工的所有信息(例如:FirstName、LastName、EmpCode)

我怎样才能得到信息

当我浏览搜索示例代码时

这是我的搜索码

NSString *searchText = searchBar.text;
    NSMutableArray *searchArray = [[NSMutableArray alloc] init];
    NSInteger TotalNoOfRecords=[self.SearchtableDataSource count];

    for (int i=0;i<TotalNoOfRecords;i++)
    {   NSDictionary *dictionary = [self.SearchtableDataSource objectAtIndex:i];
        NSArray *array = [dictionary objectForKey:@"FirstName"];


        [searchArray addObject:array];


    }
    for (NSString *sTemp in searchArray)
    {

        NSRange titleResultsRange = [sTemp rangeOfString:searchText options:NSCaseInsensitiveSearch];

        if (titleResultsRange.length > 0)
        {
                [copyListOfItems addObject:sTemp];

        }
    }
NSString*searchText=searchBar.text;
NSMutableArray*searchArray=[[NSMutableArray alloc]init];
NSInteger TotalNoOfRecords=[self.SearchtableDataSource count];
对于(int i=0;i 0)
{
[copyListOfItems addObject:sTemp];
}
}
我如何改进此代码?…请指导我。。。 [搜索阵列发布]; searchArray=nil

我们如何维护searchArray中的所有“密钥(FirstName、LastName、EmpCode)”请帮助我?谢谢…

使用NSPredicate

searchArray2 = [[NSMutableArray alloc] initWithArray:searchingArray copyItems:YES];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"FirstName IN %@", SearchtableDataSource];
[searchingArray2 filterUsingPredicate:predicate];
searchArray是您在NSArray中的首选。 从searchArray创建新的searchArray2,然后使用NSPredicate对其进行筛选

searchArray2 = [[NSMutableArray alloc] initWithArray:searchingArray copyItems:YES];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"FirstName IN %@", SearchtableDataSource];
[searchingArray2 filterUsingPredicate:predicate];
因此,您的代码应该如下所示:

tempArray = [[NSArray alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"1" ofType:@"plist"]];
searchArray = [tempArray valueForKey:@"FirstName"];
NSString *searchText = searchBar.text;
NSMutableArray *searchResults;

for (NSString *sTemp in searchArray)
{
    NSComparisonResult result = [searchText compare:searchText options:(NSCaseInsensitiveSearch) range:NSMakeRange(0, [searchText length])];
            if (result == NSOrderedSame)
            {
                [searchResults addObject:sTemp];
            }
searchArray2 = [[NSMutableArray alloc] initWithArray:searchArray copyItems:YES];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"FirstName IN %@", searchResults];
[searchArray2 filterUsingPredicate:predicate];
}
然后将searchArray2发布到NSLOG
NSLOG(@“searchArray2:%@”,searchArray2)

告诉我你对结果是否满意:)