2016-05-19 19 views
0

Ich habe 2 Einheiten in meinem Datenmodell wie die Bilder unten:Core Data mit objectID holen

Product

Attendance

Ich spare auch Produkte mit Anwesenheits Beziehung! Nun muss ich die Produkte mit einem bestimmten Attendance.objectID holen

Ich versuche, den folgenden Code:

func fetchProducts() { 
    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 

    let managedContext = appDelegate.managedObjectContext 

    let fetchRequest = NSFetchRequest(entityName: "Product") 
    let attendancePredicate = NSPredicate(format: "attendance.objectID == \(currAttendance.objectID)") 
    fetchRequest.predicate = attendancePredicate 

    print("Att = \(currAttendance.name!)") 
    viewTypeSKU.hidden = true 

    do { 
     let results = try managedContext.executeFetchRequest(fetchRequest) 
     products = results as! [NSManagedObject] 
    } catch let error as NSError { 
     print("Could not fetch \(error), \(error.userInfo)") 
    } 

} 

ich Fehler bekommen: 'Unable to parse the format string "attendance.objectID ==

+0

Was currAttendance ist? Woher nimmst du das? – boidkan

+0

Versuchen Sie 'NSPredicate (Format:" anwesenheitsobjektID =% @ ", currAttendance.objectID)' – boidkan

+1

Sie könnten auch ein inverses einrichten, so dass Sie einfach 'currAttendance.product' tun und damit fertig sein können. – boidkan

Antwort

1

Im Inneren des holen SELF vergleichbar ist zu NSManagedObjectID und zur NSManagedObject. Sie können jedoch .objectID nicht für das Objekt ausführen, das abgerufen wird. Meine Theorie ist dies, weil, wenn Sie die . tun, es nach Attributen und/oder Beziehungen für die spezifische Entität sucht, wo .objectID Teil von NSManagedObject ist. Ich könnte mich allerdings irren.

Allerdings, wenn Sie gerade Ihre NSPredicate zu einem dieser geschaltet haben, wird es funktionieren.

NSPredicate(format: "attendance = %@", currAttendance.objectID)

oder

NSPredicate(format: "attendance = %@", currAttendance)