2014-05-08 5 views
0

내가 UISearch를 사용하여 필터링하려고를 필터링하고 나는있는 NSArray를 필터링 할 때 다음과 같은 오류가 발생 : 뭔가 문자열 작업을 수행 할 수 없음UISearch 자 NSPredicate가있는 NSArray

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF beginswith[cd] %@", searchText]; 
    self.searchResults = [self.pnldArray filteredArrayUsingPredicate:predicate]; 
를 사용하여 문자열

아니라고

배열

(
        (
        "Section 4 - H15, H19, H26, H42, H43 and H44", 
        "Section 5 - H21, H25 and H34" 
    ), 
        (
        "Section 149(1) - H5487", 
        "Section 149(1) - H5491" 
    ), 
        (
        "Section 146(1) - H5472", 
        "Section 147(1) - H5477" 
    ), 
+1

pnldArray가 문자열 배열이 아닌 것처럼 들리는가요? –

답변

0

로 표시 당신은 (왼쪽)이 좌보고, 유형 비교 하였다 던져진 예외에서 직접 볼 수 있어야합니다 및 RHS (오른쪽 SI de) 유형. 배열이 UIColor 객체와 값이 "바"에있는 NSString 포함 된 경우

예를 들어, 다음을 제외하고는 다음과 같습니다

이 문자열이 아닌 무언가로 문자열 조작을 할 수 없습니다 (lhs = UIDeviceRGBColorSpace 1 0 0 1 rhs = bar)

술어 beginswith은 NSString 유형의 객체를 필요로하기 때문에 다른 유형의 객체는 술어를 실패하게 만듭니다.

0

당신 은 할 수 있습니다 : 당신이 결과를 기대하는 것, 특히 명확하지 때문에

NSPredicate* predicate = [NSPredicate predicateWithFormat:@"ANY SELF beginswith[cd] %@", searchText]; 

내가 수도 말한다. 주어진 술어는 문자열의 배열을 반환합니다 (시작과 동일한 형식). 대상 문자열을 포함하는 배열 만 반환됩니다 (전체적으로)

대신에 포함하는 문자열 만 원할 경우 검색 텍스트가 일부 병합 된 배열 또는 다른 방법으로 반환 될 수 있으므로 앞으로 더 많은 작업이 필요합니다.