NSPredicate和BeginsWith

时间:2012-11-11 22:34:21

标签: ios regex core-data nspredicate

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

1 个答案:

答案 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单词,你可以将它们添加到数组中。