gpt4 book ai didi

ios - 核心数据和多对多

转载 作者:行者123 更新时间:2023-11-28 15:11:42 25 4
gpt4 key购买 nike

我有一个 iOS 应用程序可以很好地与两个核心数据实体配合使用:Employee 和 Department。我有一个 UITableViewController,它是一个 NSFetchedResultsControllerDelegate,显示员工和他们的数据,另一个显示部门和他们的数据。

不过,我很难理解如何添加 关系。我了解如何创建关系(使用数据模型的图形 View ),但我似乎找不到任何关于添加实际关系的有用信息。

在标准的 SQL 数据库中,我会有一个交叉引用表,其中包含 DepartmentID 和 EmployeeID 的列以链接它们。但这似乎不适用于 Core Data。

如何在 Swift 中添加实体关系?

最佳答案

您可以通过执行类似于此代码段的操作来使用 mutableSetValue:

let employeeBob: Employee = ...
let departmentHR: Department = ...
employeeBob.mutableSetValue(forKey: "departments").add(departmentHR)

之后,您可以通过请求employeeBob.departments 来访问Bob 的部门,或者您可以通过请求departmentHR.employees 来获取HR 中的员工。 (即该片段也为您处理逆过程。)

如果你想检查 Bob 是否已经在 HR,那么你可以检查 departmentHR.employees.contains(employeeBob)。但是,要小心,因为它会通过引用(不是员工 ID 或其他)进行检查...也就是说,如果您创建 Bob 两次(2 个不同的 NSManagedObjects 具有不同的 NSManagedObjectId),那么它们将不会“匹配”。也就是说,因为它是一个集合,如果你知道 Bob 就是 Bob(比如,每次你看到 Bob,它都是同一个 Bob 对象/引用),那么你可以一遍又一遍地添加他,这个集合会自动保护你免受欺骗.

关于ios - 核心数据和多对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47536963/

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