1

我想弄清楚 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];
4

1 回答 1

2

我最近就是这样做的,效果很好。试试看。我看到我没有[cd]and beginswithbut 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。

于 2012-11-11T22:45:08.640 回答