第一个问题:我是否还必须将销售实体的实例输入到销售实体中?还是因为存在关系而自动更新?
您可能没有意识到,通过将对象添加到managedObjectContext,您本质上是在保存对象。只要你做类似的事情
let sale = Sale(context: managedObjectContext)
紧随其后
managedObjectContext.save()
上下文向您的持久存储(您的实际 SQL 数据库)发出保存请求。
因此,您是否还需要存储销售的问题已得到解答,它将始终在保存上下文时存储。
第二个问题:如果我想查询迄今为止发生的所有销售,我要查询销售实体吗?还是我在 Products 实体中查询关系?
这取决于...
首先让我给你一点提示/最佳实践:
始终确保建立反向关系
在 Product 实体关系的核心数据编辑器中,您可以执行以下操作:
您的销售关系如下所示:
关系只不过是两个实体之间的依赖关系,因此两个实体之间总是存在反向关系,请确保如上所示将它们连接起来。
我为什么要告诉你这个?记得我提到过,这取决于您查询的实体是什么?这是重要的地方。
例如,如果您想要给定Product 的Sale,您将查询产品本身(通过查询其名为sale 的关系):
let product = [A product instance from your Core Data store]
let sale = product.sale // returns the sale the product is associated to
如果您想要来自给定销售的所有产品,您可以利用products 关系查询Sale 实体:
let sale = [A sale from your Core Data store]
let products = sale.products // the products contained in the sale
你提到你想要所有销售到给定日期:
为此查询Product 实体没有任何意义,因为每个产品只与它所包含的销售有关系。
因此,要回答您的问题,您应该查询Sale 实体以检索给定日期的所有销售额。
希望对您有所帮助,如果有不清楚的地方请告诉我。