我想找出NSPredicate,它将在我的Core数据中搜索以以下开头的单词:
例如:
核心数据中的description字段具有以下文本:
My name is Mike
My name is Moe
My name is Peter
My name is George
如果我搜索“我的名字是”,我需要输入3行
如果我搜索“我的名字是M”,则需要获得前2行
我尝试了下面的代码,但无法获得我所需要的。我猜我需要一个正则表达式,但不确定如何执行。
[NSPredicate predicateWithFormat:@"desc beginswith [cd] %@",word];
最佳答案
我最近是这样做的,并且运行良好。试试看。我看到我没有[cd]
和beginswith
,但是没有contains
。您可以尝试一下。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains %@", textField.text];
NSArray *list = [allWords filteredArrayUsingPredicate:predicate];
for(NSString *word in list){
NSLog(@"%@",word);
}
在阅读关于起始帖子的评论后:
首先,您应该从文本字段中拆分字符串中的单词:
NSArray *myWords = [textField.text componentsSeparatedByString:@" "];
然后像您首先做的那样做:
for(NSString *wordFromTextField in myWords){
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains %@", wordFromTextField];
NSArray *list = [allWords filteredArrayUsingPredicate:predicate];
for(NSString *word in list){
NSLog(@"%@",word);
}
}
您可以将它们添加到数组中,而不是NSLogging这些单词。
关于ios - NSPredicate和BeginsWith,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13336191/