嗨,有一段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/

10-12 00:08
查看更多