javascript - 在 Objective-C 中使用 NSPredicate 获取 jQuery 自动完成结果

标签 javascript jquery ios autocomplete nspredicate

你好,有一段 jquery 代码,如下所示

var src = data.split(',');
    jQuery("#stationFrom").autocomplete({
        source: function( request, response ) {
            var matcher = new RegExp( "\\b" + jQuery.ui.autocomplete.escapeRegex( request.term ), "i" );
            response( jQuery.grep( src, function( item ){
                return matcher.test( item );
            }) );
        },

这基本上是自动完成文本字段。我正在尝试使用 NSPredicate 在 Objective-C 中模拟相同的内容。我试过的查询是

NSArray *filteredArray = [possibleTerms filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF contains[cd] %@", inputString]];
return filteredArray;

但是,这不会返回与上面的 jquery 自动完成脚本相同的结果。如何修复谓词查询以匹配 jQuery。

有更好的方法吗?

最佳答案

谓词中的“MATCHES”进行正则表达式匹配(“[c]”用于不区分大小写), 所以这应该类似于您的 jQuery 代码:

NSString *pattern = [NSString stringWithFormat:@".*\\b%@.*", [NSRegularExpression escapedPatternForString:term]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self MATCHES[c] %@", pattern];
NSArray *filteredArray = [possibleTerms filteredArrayUsingPredicate:predicate];

如果你想获取数组中所有以给定术语开头的字符串, 你可以使用更简单的谓词

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self BEGINSWITH[c] %@", term];

关于javascript - 在 Objective-C 中使用 NSPredicate 获取 jQuery 自动完成结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23582873/

相关文章:

c# - 获取使用javascript计算的按钮单击事件上的gridview模板字段标签值

php - 如何从管理区域动态更改图像?

jquery - ASP.net 复选框列表未获取选中值

php - 替换单词数组

ios - 更新 Xcode 12.5 和 ios 14.5 时出现抖动问题

javascript - jquery迷你图堆积条问题

javascript - $.when.then() 执行的 jQuery 序列

javascript - 仅向首次查看者显示消息

ios - 使用 CGAffineTransform swift 3 语法使按钮逆时针旋转?

ios - 缺少的框架是红色的,项目仍在构建