2017-04-06 75 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