gpt4 book ai didi

Iphone NSPredicate 如何进行 INNER JOIN?

转载 作者:行者123 更新时间:2023-12-03 19:05:11 25 4
gpt4 key购买 nike

我一直在浏览本网站的文档和其他一些帖子,但我根本不明白如何解决这个问题,这在 SQL 中实际上非常简单。

基本上我有 2 个实体工具和交易。 “交易”使用“工具”来执行所需的操作。现在我想列出交易属性和用于此交易的工具属性。所以在 SQL 中我会这样做:

选择*来自仪器内联优惠ON Instruments.ID = Deals.InstrumentID

我如何使用 NSPredicate 来完成此任务?任何帮助将不胜感激。谢谢。

-奥斯卡

最佳答案

首先,您应该尽力摆脱 SQL 思维模式。核心数据不是 ORM。它是一个对象图管理框架,恰好使用 SQLite 作为一个可能的持久性后端。尽管您可以通过环境变量查看它使用的 SQL(用于调试),但 SQL 是私有(private)实现细节。核心数据完全可以在没有任何 SQL 的情况下实现。

所以,尽量不要考虑数据库表。您有一个 Deal 实例的集合。你想要他们的属性(property)吗?使用Key-value Coding获取这些实例和相关 Instrument 实例的属性。假设您有一个 DealsNSSet 实例,名为 deals:

[deals valueForKey:@"dealProperty"];

将为您提供每个 Deal 实例中 dealProperty 值的 NSSet。如果你想一次获取多个属性,可以使用-[NSObject(NSKeyValueCoding)dictionaryWithValuesForKeys:]。使用此方法只能获取“一层深”的 key ,因此只能,例如“dealProperty1”、“dealProperty2”,但不是“dealRelation.relationProperty”或“dealRelation.@count”。

要获取“嵌套”属性,只需使用键路径:

[deals valueForKeyPath:@"instrument.instrumentProperty"];

将为您提供一组与每个 Deal 实例关联的 Instrument 实例的 instrumentProperty 值,假设 instrument 是从 DealInstrument 的一对一关系。如果关系是一对多,您将获得一组 instrumentProperty 值。

您始终可以更明确地执行此操作(显然此代码不执行任何操作,甚至在语法上也不正确,因为我省略了分号等,但它显示了轮廓):

for(Deal *deal in deals) {
//use attribute access to get properties of deal and associated instrument
deal.dealProperty
deal.instrument.instrumentProperty //for one-to-one

for(Instrument *instrument in deal.instruments) { //for one-to-many instruments
instrument.instrumentProperty;
}
}

使用适当集合的枚举。

关于Iphone NSPredicate 如何进行 INNER JOIN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1821911/

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