1

を初めて構築しNSPredicateます。

managedobjectcontextこのロジックを使用して検索したいと思います。

Search for a, grab all matches
Search for b, grab all matches, etc....

Nsarray *results = (has all a results, b results, etc);

私の試みた述語は次のとおりです。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name== %@ OR name == %@ OR name == %@",a,b,c];

ただし、これでエラーが発生しますpredicate...

編集:私が書いたサンプルメソッド

-(NSPredicate*)parsePartsIntoAPredicate:(NSMutableArray*)inputPartsNames{
    NSSet *keys=[NSSet setWithArray:inputPartsNames];
    NSPredicate *predicate=[NSPredicate predicateWithFormat:@"any self.@name in %@", keys];
    NSLog(@"predicate = %@",predicate);
    return predicate;
}

明確化: 車のデータベース (20,000 台) があります。各車には複数の部品があります。パーツ a を持つすべての車、パーツ b を持つすべての車、パーツ c を持つすべての車を検索したいと考えています。次に、パーツ a、b、c などの車の配列を返したいと思います...

より良い方法があると思われる場合はお知らせください。ただし、私はこれに逆行しています。私は言っています

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Cars" inManagedObjectContext:[self managedObjectContext]];
    [fetchRequest setEntity:entity];
    [fetchRequest setPredicate:[self parsePartsIntoAPredicate:inputParts]];

    NSError *error;
    NSArray *records = [[self managedObjectContext] executeFetchRequest:fetchRequest error:&error];

私は何を間違っていますか?

4

3 に答える 3

2

これを使って

NSPredicate* predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"%@ '%@'", @"SELF contains[c] ",searchText]];
于 2013-01-02T08:58:29.757 に答える
2
NSString *key;
NSMutableArray *tempArray;
NSPredicate *searchForName = [NSPredicate predicateWithFormat:@"name = %@", key];
NSArray *filterArray = [tempArray filteredArrayUsingPredicate:searchForName];
NSLog(@"%@",filterArray);

keyは searchKeyword で、tempArrayデータが存在する CompleteArray です。

このように使用します。データを入れてください。

于 2013-01-02T07:26:08.920 に答える
0

セットまたは配列内の文字列の 1 つであるCarsを持つすべてのオブジェクトをフェッチするには、次を使用します。namekeys

[NSPredicate predicateWithFormat:@"name IN %@", keys]
于 2013-01-02T14:26:25.460 に答える