我想找出NSPredicate,它会搜索我的核心数据,搜索以下字母开头的单词:
例如: 核心数据中的描述字段具有如下文本:
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];
答案 0 :(得分:2)
我最近这样做了,工作得很好。试试看。我发现我没有[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单词,你可以将它们添加到数组中。