core-data - 使用谓词在结果中搜索

标签 core-data swift ios8 nspredicate

我创建了一个汽车核心数据模型,我想选择一种车型加上几种不同颜色中的任何一种。这是我设想的做法:

选择 View Controller

1) 选择汽车类型(轿车、轿跑车、SUV、混合动力车)(我设想一个分段控件将此设置为谓词)

2) 选择车辆类型后,我想从颜色列表中选择仅显示满足我在第一步中选择的车辆类型的汽车。例如,我想只显示(红色、绿色和蓝色)SUV 或黑色和白色的混合动力车。

结果 TableView Controller

3) 一旦选择了这些,我想将它们转储到另一个 TVC 上。

这篇文章有点帮助,但提出问题的人试图找到不同的项目(例如:A、B 和 C)。我试图在 A 中找到 X、Y 和 Z。 Can I apply multiple predicates to an NSFetchRequest? Would it be better to manually parse my results?

当我尝试检索一种类型的车辆以及所选颜色的列表时遇到了麻烦

let vehiclePredicate = NSPredicate(format: "type == %@", "(one of sedan/coupe/SUV/hybrid)")

以及以下任何条件

let colorRedPredicate = NSPredicate(format: "color == %@", "red")
let colorGreenPredicate = NSPredicate(format: "color == %@", "green")
let colorBluePredicate = NSPredicate(format: "color == %@", "red")
let colorBlackPredicate = NSPredicate(format: "color == %@", "black")
let colorWhitePredicate = NSPredicate(format: "color == %@", "white")

let colorPredicates: NSArray = [**add colors here when they're selected**]

我正在尝试找出最简洁的方法来执行此操作,但我发现的示例仅检索不同的项目。

我遇到的另一个障碍是如何将结果从我的 SelectionVC 获取到 ResultTVC。我知道我需要一名代表,但我需要什么?对此的任何帮助将不胜感激。

最佳答案

你想以这样的谓词结束:

type == %@ AND color IN %@

然后以字符串形式提供您的类型,以集合形式提供颜色。您可以使用从其他 2 个创建的复合谓词来执行此操作,或者只需更改您的 UI 选择的含义并生成两个参数作为分割名称和一组颜色。

如果你想组合双簧管的多个选项,那么你需要创建每个选项,然后使用复合谓词将它们组合起来。

关于core-data - 使用谓词在结果中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27806103/

相关文章:

具有 Float 类型的 Swift String 初始值设定项生成奇怪的值

iOS Rich 推送通知在某些设备中不显示图像

ios - HKHealthStore deleteObject 和 HKCorrelations

ios - 后台同步Core Data数据

objective-c - 保存后 NSManagedObject 更改了属性

swift - 从核心数据中检索 NSOrderedSet 并将其转换为实体 managedObjectSubclasss

swift - 我正在制作简单的Note应用程序。但是,当我运行该应用程序时,它无法处理此错误消息线程1:在AppDelegate类中发出SIGABRT信号

ios - 为什么不使用 frameOfPresentedViewInContainerView 定义我的 View Controller 大小使其达到该大小?

ios - 快速实现功能

ios - 核心数据后台保存性能问题