【问题标题】:Using NSPredicate how to filter value from core data使用 NSPredicate 如何从核心数据中过滤值
【发布时间】:2013-02-23 14:26:54
【问题描述】:

我有一个实体和三个属性,分别称为名称、版本、公司。 我想从公司属性中过滤值,例如“快餐”。

    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];

但我不能这样做请帮助我。

【问题讨论】:

    标签: iphone ios xcode ipad


    【解决方案1】:

    您不需要将属性名称用引号引起来:

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

    或更好

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

    顺便说一句:您的谓词搜索“Fast Foood”,而不是“Fast Food”。


    (响应您的 cmets) 您应该定义具有一对多关系的实体 CategoryDishes

    现在您可以通过以下获取请求找到给定类别的所有菜肴:

    NSString *catName = @"Desert";
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Dish"];
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"category.name = %@", catName];
    [request setPredicate:predicate];
    

    【讨论】:

    • @AbhishekRathore:如果您描述问题,我会尽力提供帮助。
    • 实际上我想根据一个类别来获取信息,例如,让我们拿一个餐厅菜单,在这里我想根据管理员输入的值显示菜单卡上的值准备物品清单。例如,冰淇淋插入甜品类,淘摩豆汤插入汤类。此项目需要根据所选类别显示在菜单中。
    • @AbhishekRathore:我很困惑。您的问题是关于具有 company 属性的 Device 实体。现在您谈论具有类别的菜肴。请告诉我您定义了哪些实体和关系。
    • 菜品依赖于定义的类别,所以当菜品附加到类别时,它应该根据插入显示在菜单上。让我知道这是否足够。
    • @AbhishekRathore:这和你的问题完全不同!! - 所以你有一个实体Dish和实体Category?定义了哪些属性和关系? “在菜单上显示”是什么意思?
    猜你喜欢
    • 2011-04-10
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    相关资源
    最近更新 更多