2017-04-06 81 views
2

我有两个名为Patients和Recordings的Core数据实体。病人可以有单个或多个记录。我希望当一个视图加载时,我可以在单次获取中获取两个实体属性的信息,就像我们在sql中使用join一样。任何帮助?从CoreData中的多个实体获取属性Swift

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) 
     } 

    } 

我建立了关系,就像我们在图像中看到的一样。我怎样才能检查哪个病人有录音存在?

+0

我不是核心数据专家,但您到目前为止尝试过什么?什么失败了?你的核心数据模型是什么样的?你正在尝试什么取回请求? –

+1

你可以至少伪代码你想要做的提取 – SeanLintern88

+0

@statoverflow.com/how-to-ask – sasquatch

回答

2

使用核心数据一次只能提取一种实体类型。核心数据不是SQL。

对此的核心数据风格方法将类似于:获取Patients的实例。然后使用每个Patients实例上的sounds关系获取有关存在哪些记录的信息。例如,如果您想知道特定患者是否有录音,请查看sounds关系 - 这是一组 - 并查看是否为空。

+0

@Robotic猫谢谢你编辑的问题。我一定会在下次来这里时检查有关提问的规则。谢谢。 – Imran