Swift 核心数据 NSPredicate

标签 swift core-data nsfetchedresultscontroller

我想要实现什么目标?

我有一个包含三个核心数据实体的应用:Ingredients、Cookies 和 CookieIngredients。

  • 成分是鸡蛋、牛奶、黄油等,还有一个 bool 值,表示我的厨房里是否有该成分。
  • cookies 是巧克力片、燕麦葡萄干等。
  • CookieIngredients 是每个 Cookie 所需的每种成分的单位。

我希望能够根据我厨房中所指示的成分来显示我可以制作哪些 cookies 。

我做了什么?

我已成功使我的应用程序达到所有这些实体都在核心数据中进行管理的状态,并且我能够毫无问题地将成分标记为“在我的厨房中”。我可以根据成分和标题搜索 Cookie。

我被困在哪里了?

我无法找到任何示例来帮助理解如何创建 NSPredicate 以将我的 FetchedResultsController 限制为仅 Cookie,其中所有 CookieIngredient 的成分都在“我的厨房里”。如果这是一个使用 MySQL 数据库的 Web 应用程序,我可以通过一些内部联接来做到这一点,但我不知道如何使用 Core 来实现类似的东西 - 或者即使有可能做这样的事情数据。

最佳答案

像下面这样的谓词应该有效:

let predicate = NSPredicate(format: "ALL ingredients.inKitchen = YES")

这假设您的 Cookie 实体具有 ingredients 关系,并带有名为 inKitchenboolean 标志。

关于Swift 核心数据 NSPredicate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47747178/

相关文章:

ios - View Controller 的对象 swift 隐藏在视频背景后面

ios - 从核心数据中获取随机对象

iphone - 获取属于父对象的子对象并将它们放入 tableView 中(核心数据、关系)

objective-c - NSFetchRequest 和 predicateWithBlock

swift - 在 iOS 的广告中发送蓝牙 LE 数据

ios - 在 UIWebView 中全屏时如何拦截视频?

swift UIActivityIndi​​catorView .hidden = false 不工作

ios - 保存后 Core Data objectID 为 nil

ios - (NSFetchedResultsController) : couldn't read cache file to update store info timestamps

ios - 为什么我的 UITableView 重新加载其所有节标题?