我必须使用NSPredicate (CoreData)
从字符串列表中获取特定字符串。例如:
如果我有CoreData
的Helloworld
helloworld1234
helloworld 12345
从上面的列表中我只需要1和3作为结果。 我尝试了以下但是我得到了所有三个结果
NSPredicate *predicate =[NSPredicate predicateWithFormat:@"contactName CONTAINS [c]%@",[arySeperator objectAtIndex:1]];
NSArray *filteredArray1 = [arrayContacts filteredArrayUsingPredicate:predicate];
我哪里错了?
答案 0 :(得分:1)
要查找包含给定文本的所有条目作为“整个单词”,您可以使用
谓词“MATCHES”运算符,它与正则表达式匹配,并且
字边界模式\b
:
NSString *searchWord = @"Helloworld";
NSString *pattern = [NSString stringWithFormat:@".*\\b%@\\b.*", searchWord];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"contactName MATCHES[c] %@", pattern];
如果将此谓词添加到Core Data fetch请求,这也应该有效, 而不是过滤已经获取的托管对象数组。
答案 1 :(得分:0)
LIKE 左手表达式等于右手表达式:?和*被允许作为通配符,在哪里?匹配1个字符,*匹配0个或更多个字符。
NSString *textSearch = @"Raja";
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"firstname LIKE '*%1$@*' OR lastname LIKE '*%1$@*'", textSearch];
答案 2 :(得分:0)
您可以使用以下代码获取NSArray中是否存在字符串:
NSArray* yourArray = [NSArray arrayWithObjects: @"Str1", @"Str2", @"Str3", nil];
if ( [yourArray containsObject: yourStringToFind] ) {
// do found
} else {
// do not found
}