我想找出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/

10-13 07:30