我試圖獲取父項的所有子項。Swift - CoreData NSPredicate - 獲取父項的子項
在我的情況下,父母是一個實體AgendaEvent,它有很多議程日程(孩子)。
所以這裏是我的功能:
func getRelatedAgendaEvent(event: AgendaEvent) ->NSFetchRequest<AgendaDate> {
// create a fetch request that will retrieve all the AgendaDate.
let fetchRquest = NSFetchRequest<AgendaDate>(entityName: "AgendaDate")
// set the predicate to only keep AgendaDate related with the AgendaEvent selected
fetchRquest.predicate = NSPredicate(format: "parent == %@", event)
return fetchRquest
}
,我用這個在didselectRow了的tableView:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
var eventToPass: AgendaEvent!
var eventDateToPassArray: [AgendaDate]!
eventToPass = myTempEvents[indexPath.row]
eventDateToPassArray = try! context.fetch(getRelatedAgendaEvent(event: eventToPass))
DispatchQueue.main.async {() -> Void in
self.performSegue(withIdentifier: "EventToModify", sender: eventToPass)
}
}
}
我想在SEGUE使用eventDateToPassArray。 我得到的錯誤是:
keypath parent not found in entity <NSSQLEntity AgendaDate id=1> with userInfo of (null)
我不知道這是正確的道路。我試圖在用戶編輯AgendaEvent時更新NSSet(AgendaDate)。因此,基本上在更新和AgendaEvent時,用戶還會更新相關AgendaData NSSet中的日期。
謝謝!
------------- UPDDATE
馬丁你的意思是這樣的:
AgendaDate + CoreDataProperties.swift
extension AgendaDate {
@nonobjc public class func fetchRequest() -> NSFetchRequest<AgendaDate> {
return NSFetchRequest<AgendaDate>(entityName: "AgendaDate")
}
@NSManaged public var agendaDates: NSDate?
@NSManaged public var agendaEvents: AgendaEvent?
}
AgendaDate + CoreDataClass.swift
import Foundation
import CoreData
@objc(AgendaDate)
public class AgendaDate: NSManagedObject {
}
您爲eventDateToPassArray指定一個值,但永遠不會使用* it。 –
@MartinR我知道....我打印只是爲了看結果..但我得到那個錯誤 – Marco
顯示'AgendaDate'是如何定義的。哪裏*究竟*你會得到錯誤? –