0
이 같은 데이터를 (모든 데이터가 ... .plist 파일에서 제공)

SearchBar에 프로그래밍

Searching Array - (
     { 
     FirstName = "Ramesh"; 
     LastName = "Bean"; 
     EmpCode = 1001; 
    }, 
     { 
     FirstName = "Rohan"; 
     LastName = "Rathor"; 
     EmpCode = 102; 
    }, 
     { 
     FirstName = "Priya"; 
     LastName = "Malhotra"; 
     EmpCode = 103; 
    }, 
     { 
     FirstName = "Mukesh"; 
     LastName = "Sen"; 
     EmpCode = 104; 
    }, 
     { 
     FirstName = "Priya"; 
     LastName = "Datta"; 
     EmpCode = 105; 
    } 

) 

가 있는데 이름에 근거하여이 배열에서 검색 데이터를 구현하고자이

(키).

내가 "FIRSTNAME (키)"로 데이터를 검색 할 수 있어요

하지만, 데이터를 필터링 한 후

이있는 TableView에 표시되는 (데이터에) 내가 행을 클릭 한 가정합니다. 특정 직원의 모든 정보 (예 : FirstName, LastName, EmpCode)를 사용하여 New-Controller로 이동합니다.

어떻게 정보를 얻을 수 있습니까?

검색 샘플 코드를 살펴 보았습니다. 여기에

내가이 코드 .... 안내하시기 바랍니다 나 ... [searchArray 해제]를 향상시킬 수있는 방법 ...

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]; 

     } 
    } 

내 검색 코드; searchArray = nil;

searchArray에있는 "Keys (FirstName, LastName, EmpCode)"를 모두 유지 관리하는 방법을 알려주십시오. 감사합니다 ...

답변

0

NSPredicate를 사용하십시오.

searchArray는 NSArray에서 귀하의 plist입니다. 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]; 
} 

그런 다음
NSLOG(@"searchArray2: %@", searchArray2)
을 NSLOG 및 말해 searchArray2을 게시