ios - NSPredicate 在 Objective C 中查找多个单词

标签 ios objective-c nspredicate

我有这段代码可以在字符串中搜索特定的单词,例如 Canada Poland México 示例:

  NSString *valueOfUser = @"I want Poland"

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

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

    NSArray *filtered = [arr filteredArrayUsingPredicate: pred]; 
// But this array always contain 0 elements

我的错误在哪里?

我想找到这样的解决方案:

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

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

最佳答案

你的查询应该是相反的: valueOfUser CONTAINS[c] SELF,试试这个:

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

swift :

        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) }

关于ios - NSPredicate 在 Objective C 中查找多个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47008080/

相关文章:

ios - 覆盖UIImage imageNamed-我有哪些选择?

ios - UIAlertViewController : Separate tint colors for cancel and other action buttons

objective-c - iOS 相当于 Android finish()

iphone - 我应该在哪里删除通知观察者?

iphone - 将两个 CoreData 关系(具有逆关系)分配给同一实体

ios - EZAudio 中的音频输入源

IOS AVPlayer 不会播放视频

ios - 如何理解选择了哪个 UITableViewCell

ios - 基于 3 个 NSPredicates 动态过滤数组

ios - 构建 nspredicate 时出现 EXC_BAD_ACCESS