0

名前、バージョン、会社と呼ばれる 1 つのエンティティと 3 つの属性があります。「ファーストフード」などの会社属性から値をフィルタリングしたい。

    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Device" inManagedObjectContext:managedObjectContext];
    [request setEntity:entity];
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"('company' contains[c] 'Fast Foood')"];
    [request setPredicate:predicate];
    NSLog(@"Pre %@",predicate);

    NSError *error = nil;
    NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
    if (mutableFetchResults == nil) {
        // Handle the error.
    }

    // Set self's events array to the mutable array, then clean up.
    [self setDataarr:mutableFetchResults];

しかし、私はこれを行うことができません。助けてください。

4

1 に答える 1

0

属性名を引用符で囲む必要はありません。

[NSPredicate predicateWithFormat:@"company CONTAINS[c] 'Fast Foood'"];

またはそれ以上

[NSPredicate predicateWithFormat:@"company CONTAINS[c] %@", @"Fast Foood"];

ところで、述語は「Fast Food」ではなく「Fast Food」を検索します。


(あなたのコメントに応えて) 1 対多の関係でエンティティCategoryDishesを定義する必要があります。

ここに画像の説明を入力

次のフェッチ リクエストを使用して、特定のカテゴリのすべての料理を検索できるようになりました。

NSString *catName = @"Desert";
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Dish"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"category.name = %@", catName];
[request setPredicate:predicate];
于 2013-02-23T14:32:29.113 に答える