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