NSArray 검색

NSArray에 포함된 객체에서 지정된 조건과 일치하는 객체를 추출하는 방법.

예를 들면, 이런 일을 하고 싶을 때.
1. 테이블 뷰에서 검색


2. 결과 표시


지금까지는 for문에서 하나하나의 객체가 조건과 일치하는지 확인하고 있었다.

NSArray의 filteredArrayUsingPredicate:를 사용하면 그런 일 없이 추출할 수 있었군요. ↓ 이것입니다.
- (NSArray *)filteredArrayUsingPredicate:(NSPredicate *)predicate


사용법의 포인트만 메모. 자세한 것은 샘플 에서.

NSArray *_noodles = @[
                 [[Noodle alloc]initWithName:@"miso" price:600],
                 [[Noodle alloc]initWithName:@"shoyu" price:550],
                 [[Noodle alloc]initWithName:@"shio" price:600],
                 [[Noodle alloc]initWithName:@"tonkotsu" price:800]
    ];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.name contains[c] %@", searchText];

나머지는 filteredArrayUsingPredicate를 사용하여 추출합니다.
_filterdNoodles = [NSMutableArray arrayWithArray:[_noodles filteredArrayUsingPredicate:predicate]];

UITableView와 UISearchDisplayController를 사용하여 검색 조건 문자열을 포함하는 것을 추출하는 샘플을 만들었습니다.
샘플은 여기

좋은 웹페이지 즐겨찾기