将关系筛选器添加到NSPredicate

时间:2013-01-25 17:50:57

标签: ios core-data nsfetchrequest

我正在使用最新的SDK和Xcode 4.5.2开发iOS应用程序。部署目标是4.3。

我正在使用Core Data访问此实体:

enter image description here

我想过滤商店,但我不知道该怎么做(这是我的第一个核心数据项目)。

我知道我必须将NSFetchRequestNSPredicateNSExpression一起使用。

我写这个if语句来向你展示我正在做的事情:

if ((shop.acceptRate >= filterCriteria.acceptRate) &&
    (shop.categoryId == filterCriteria.shopCategoryId) &&
    ([shop.productsId indexOfObject:filterCriteria.productCategoryId] != NSNotFound) &&
    ([latestLocation distanceFromLocation:shop.shopLocation] <= (filterCriteria.distance * 1000)))
{
    [ ... ]
}

如何使用NSFetchRequestNSPredicate使用NSExpression

我认为是这样的:

NSPredicate* predicate =
   [NSPredicate predicateWithFormat:@"acceptRate >= %@ AND categoryId = %@", filterCriteria.acceptRate, filterCriteria.shopCategoryId];

但我不知道如何在NSPredicate上编写产品关系。

1 个答案:

答案 0 :(得分:0)

根据您提供的信息,这样的事情应该有效:

NSPredicate* predicate = [NSPredicate predicateWithFormat:@"acceptRate >= %@ AND categoryId = %@ AND %@ IN products", filterCriteria.acceptRate, filterCriteria.shopCategoryId, filterCriteria.product];

其中filterCriteria.product是类型为Product

的NSManagedObject实例