gpt4 book ai didi

ios - CoreData中的自引用数据对象

转载 作者:行者123 更新时间:2023-12-01 17:40:43 26 4
gpt4 key购买 nike

我正在从SQL的一生转变为CoreData,这并不是没有一点麻烦。目前让我大吃一惊的是创建一个自引用对象。请允许我解释。
使用SQL术语,我有一个表,其中包含流程中的步骤。为简单起见,我将说该表包含两条信息-步骤的名称和其后的步骤(可能是表中的下一个记录,也可能不是下一个记录)。该过程中的所有步骤都存储在一个表中。每一步之后总会有一个步骤。但是,并非所有步骤都比它先一步。
换句话说,它应该看起来像这样:
desired outcome
(来源:justinwhitney.com)
在SQL世界中,我将创建一个包含标识字段,名称和引用其自身标识字段的外键的单个表(我想那是国内键吗?),因此:
SQL version
(来源:justinwhitney.com)
但是,对于关系,没有身份字段之类的东西。也没有可以创建的选择查询来提取所需的信息。
那么,创建执行相同操作的实体的最佳方法是什么?我尝试创建一种关系,这种关系本身会倒转,事实证明这很难调试灾难。还有哪些其他选择?
谢谢!

最佳答案

创建从实体到自身的关系“nextStep”。那你就可以
做类似的事情

// Create first thing:
Thing *thingA = [NSEntityDescription insertNewObjectForEntityForName:@"Thing" inManagedObjectContext:context];
thingA.name = @"...";

// Create second thing:
Thing *thingB = [NSEntityDescription insertNewObjectForEntityForName:@"Thing" inManagedObjectContext:context];
thingB.name = @"...";

// Establish the relationship between these two objects:
thingA.nextStep = thingB;

“nextStep”也应具有“逆关系”。由于两个或多个对象
可以具有相同的后继者(如您的情况,“C”和“D”都指向“E”),
逆关系将是“多对多”关系,可以称为
“previousSteps”或类似内容。

在Core Date模型编辑器中,这看起来像:

关于ios - CoreData中的自引用数据对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20447142/

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