从CoreData Swift中的多个实体获取属性

时间:2017-04-06 14:47:38

标签: ios swift core-data

我有两个名为患者和录音的核心数据实体。患者可以进行单次或多次录音。我想要一个视图加载我可以在单个提取中获取两个实体属性的信息,就像我们在使用join的sql中所做的那样。有什么帮助吗?

Core Data Model Image Search Patient

患者可以进行单次录音或多次录音。现在在查看负载我显示来自核心数据患者实体的所有患者。我希望在表格单元格中显示图像,如果患者已完成录制,则会显示录制图标,或者如果已完成转录,则它也具有转录图标,如果患者没有录制,则没有图标显示。我想获取两个表格的数据在一次获取中。

func FetchSearchData() {

        let uid = defaults.value(forKey: "UserID")
        searchTasks.removeAll()

        let fetchRequest:NSFetchRequest<Patients> = Patients.fetchRequest()
        let sortDescriptor = NSSortDescriptor(key: "dateSchedule", ascending: true)
        fetchRequest.sortDescriptors = [sortDescriptor]
        let predicate = NSPredicate(format: "(userID=%@)", uid as! CVarArg)
        fetchRequest.predicate = predicate

        do {
            let count = try getContext().count(for: fetchRequest as! NSFetchRequest<NSFetchRequestResult>)

            if count > 0 {

                let fetchResult = try getContext().fetch(fetchRequest)

                for item in fetchResult {
                    searchTasks.append(item)
                    searchTableView.reloadData()
                }
            } else {
                searchTableView.reloadData()
            }

        }catch {
            print(error.localizedDescription)
        }

    }

我创造了我们在图像中看到的关系。如何检查哪个患者有录音存在?

1 个答案:

答案 0 :(得分:2)

使用Core Data,您一次只能获取一种实体类型。核心数据不是SQL。

Core Data样式的方法类似于:获取Patients的实例。然后在每个sounds实例上使用Patients关系来获取有关哪些记录存在的信息。例如,如果您想知道特定患者是否有录音,请查看sounds关系 - 这是一个集合 - 并查看它是否为空。