gpt4 book ai didi

iPhone 核心数据 - 访问具有许多关系的深层属性

转载 作者:搜寻专家 更新时间:2023-10-30 23:23:41 24 4
gpt4 key购买 nike

假设我有一个实体用户,它与实体菜单具有一对多关系,实体菜单与实体餐具有一对多关系,实体餐具有多对一关系,实体食谱具有一对多关系与实体元素。我想做的是选择属于特定用户 (username = myUsername) 和特定 menus (minDate < menu.date < maxDate) 的元素。

有没有人知道如何获得它们?

谢谢

最佳答案

您想获取元素实体。根据您的描述,不清楚您是否定义了反向关系 1 (例如元素到接收者)以及它们是一对多还是一对一。假设您已定义它们并且它们是一对一的,您可以使用 [2] 之类的谓词进行提取:

[NSPredicate predicateWithFormat:@"%@ > recipe.meal.menu.date && recipie.meal.menu.date < %@ && recipie.meal.menu.user.username LIKE[cd] %@", minDate, maxDate, myUsername];

我使用 LIKE[cd] 对用户名进行不区分大小写和变音符号的比较。另请注意,Core Data 将日期存储为双 NSTimeInterval,没有时区信息。如果您想进行时区敏感的日期比较,您需要做更多的工作。

1如果您还没有定义反向关系,请定义。正如在其他地方多次提到的那样,Core Data 是一个图形管理框架,恰好能够将其图形持久化到磁盘。如果您定义反向关系,它将自动为您做很多幕后工作来维护参照完整性。特别是对于多对多关系,Core Data 实际上需要逆向操作才能使事情正常进行。

[2] 如果您在我假设为一的地方定义了对多的逆,您将不得不使用稍微复杂一点的谓词。例如,第一个子句是

@"ANY (@unionOfSets.recipe.meal.menu.date) < %@"

(最后一点未经测试;KVO 集合运算符对我来说总是有点试验)。您可以阅读 set and array KVO 运算符。

关于iPhone 核心数据 - 访问具有许多关系的深层属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2668164/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com