2016-08-09 56 views
0

Mein Kerndatenmodell hat zwei Entitäten: Standorte und Fotos.Anzahl der Beziehungen in Core Data suchen - Swift

Location speichert lat, lon und kann viele Fotos damit verbunden haben. Fotos speichern ein Bild als Binärdaten. Umgekehrte Beziehungen werden ebenfalls festgelegt.

Wie kann ich für einen bestimmten Standort sehen, ob dieser Entität derzeit Fotos zugeordnet sind?

Ich verwende eine NSManagedObject-Klasse für Standorte und dachte über die Suche durch alle Fotos nach, aber das schien ziemlich ineffizient.

class Location: NSManagedObject, MKAnnotation { 
    init (latitude: Double, longitude: Double, context: NSManagedObjectContext) { 

     if let ent = NSEntityDescription.entityForName("Location", inManagedObjectContext: context) { 
      super.init(entity: ent, insertIntoManagedObjectContext: context) 

      self.latitude = NSNumber(double: latitude) 
      self.longitude = NSNumber(double: longitude) 
     } 
     else { 
      fatalError("ERROR") 
     } 
    } 

    override init(entity: NSEntityDescription, insertIntoManagedObjectContext context: NSManagedObjectContext?) { 
     super.init(entity: entity, insertIntoManagedObjectContext: context) 
    } 

    func photoCount(context: NSManagedObjectContext) ->Int { 
     let fetchRequest = NSFetchRequest(entityName: "Photo") 
     let predicate = NSPredicate(format: "location = %@", self) 

     fetchRequest.predicate = predicate 

     ??? Best Option ??? 

     return <COUNT OF PHOTOS FOR LOCATION> 
    } 
} 

Antwort

1

Sie machen dies viel schwieriger als nötig. Da Sie sagen, dass es eine Beziehung von Location zu Photo gibt, müssen Sie nur den Wert dieser Beziehung nachschlagen. Wenn Sie bereits eine Location haben, können Sie ihre Beziehungen direkt verwenden, ohne einen weiteren Abruf durchzuführen.

Wenn Sie

let location : Location = // assume this exists 

Und wenn Location hat eine n-Beziehung genannt photos zu Entität Photo, erhalten Sie die Anzahl der Fotos als

let count = location.photos?.count