2017-10-30 9 views
0

에 여러 단어를 찾는 나는 캐나다 폴란드 멕시코 예와 같은 문자열 특정 단어를 검색하려면이 코드가? 반대해야자 NSPredicate는 목표 C

NSString *valueOfUser = @"I want Poland" 
filtered[0] -> "Poland" 

NSString *valueOfUser = @"I choose Poland and México" 
filtered[0] -> "Poland" 
filtered[1] -> "México" 

답변

4

질문 :

내가 같은 솔루션을 찾으려면 valueOfUser CONTAINS[c] SELF이 시도 :

목적 C :

NSString *valueOfUser = @"I want Poland"; 

NSPredicate *pred =[NSPredicate predicateWithFormat: @"%@ contains[c] SELF", valueOfUser]; 

NSArray *arr = @[ 
       @"Canada", 
       @"Poland", 
       @"México" 
       ]; 

NSArray *filtered = [arr filteredArrayUsingPredicate: pred]; 

스위프트 :

 let dataSource = ["Canada","Poland","México"] as NSArray 
     let searchString = "I choose Poland and México" 
     let predicate = NSPredicate(format: "%@ contains[c] SELF", searchString) 
     let dataArray = dataSource.filter { predicate.evaluate(with: $0) } 
+0

만 사용 Array이 더 읽기를 찾을 수 있습니다! Swift에서 NSArray를 사용하지 마십시오. 컴파일러가 Swift에서 유추 할 수있는 유형에 주석을 달지 마십시오. –

1

어떤 사람들은

NSString *valueOfUser = @"I want Poland"; 

NSPredicate *predicate = [NSPredicate predicateWithBlock:^BOOL(NSString *evaluatedObject, NSDictionary *bindings) { 
    return [valueOfUser containsString:evaluatedObject]; 
}]; 

NSArray *arr = @[ 
       @"Canada", 
       @"Poland", 
       @"México" 
       ]; 

NSArray *filtered = [arr filteredArrayUsingPredicate:predicate];