iPhone/iPad中的搜索栏编程
我有这样的数据…(所有数据来自.plist文件…) 我想在FirstName(key)的基础上实现这个数组中的搜索数据 我能够使用“FirstName(Key)”搜索数据 但是在过滤数据之后,假设我单击了在TableView中显示的行(在数据中)。它将我导航到新的控制器,其中包含该特定员工的所有信息(例如:FirstName、LastName、EmpCode) 我怎样才能得到信息 当我浏览搜索示例代码时 这是我的搜索码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;
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发布到NSLOGNSLOG(@“searchArray2:%@”,searchArray2)
告诉我你对结果是否满意:)