2016-04-24 2 views
0

Mein Code ist:Art und Forschung mit Grafik Coredata

let risultato = DataManager.sharedInstance.graph.searchForEntity(
     properties: [(key: "tempo", value: "00:00:40.00", 
      ("valore","decimi")]) 

Aber ich will mein Ergebnis beiden Bedingungen zu erfüllen, ist ein so oder nicht und.

Wie soll ich das tun?

Auch wie kann ich die Entity nach einem Schlüssel sortieren?

Antwort

0

Um zu filtern, verwendet Graph einen programmatischen Ansatz, anstatt komplexe Abfragen zu schreiben. Das erste wäre also, die gesuchte Datensammlung durch OR zu erhalten. Die AND in der

filter behandelt
let result = graph.searchForEntity(properties: [("valore", "decimi")]).filter { (entity: Entity) in 
     return entity["tempo"] as? String == "00:00:40.00" 
    } 

Zum Sortieren, können Sie dies tun, da die Ergebnisdatenstruktur ein Array

let sorted: [Entity] = result.sort ({ $0["key"] as? String > $1["key"] as? String }) 

    let sorted: [Entity] = result.sort { (a: Entity, b: Entity) -> Bool in 
     return a["key"] as? String > b["key"] as? String 
    } 

FYI

auch, nicht wahr benötigen eine gemeinsame Instanz von Graph durch DataManager.sharedInstance. Jede Instanz von Graph verweist auf dieselben Daten. Das ist einer der Vorteile, die Graph bietet.