2017-05-30 1 views
1

Ich möchte CloudKit für alle Datensätze mit einem leeren Datum (0/00/0000 00:00:00) abfragen und ich weiß nicht wie ein Prädikat machen, das es tun wird. HierAbfrage CloudKit mit NSPredice für Datum, das leer ist (oder null oder was auch immer)

ist, was ich habe versucht, und die damit verbundenen Fehler:

let predicate = NSPredicate(format: "ready == nil")      // <ready != nil>: <nil> is not a function expression 
    let predicate = NSPredicate(format: "ready == NIL")      // <ready == nil>: <nil> is not a function expression 
    let predicate = NSPredicate(format: "ready != NULL")      // <ready != nil>: <nil> is not a function expression 
    let predicate = NSPredicate(format: "ready == %@", NSNull())   // NSNull not allowed in comparison expression 
    let predicate = NSPredicate(format: "ready == $NULL")     // Unable to parse the format string "ready == $NULL" 
    let predicate = NSPredicate(format: "ready == $BLANK")     // <ready == $BLANK>: <$BLANK> is not a function expression 
    let blankDate: Date = Date.init() 
    let predicate = NSPredicate(format: "ready == %@", blankDate as NSDate) 

    let haveADate = NSPredicate(format: "ready > %@", NSDate.distantPast as NSDate) 
    let predicate = NSCompoundPredicate(notPredicateWithSubpredicate: haveADate) // Inverting a valid one doesn't work either 
+0

Nach mehr Forschung glaube ich, dass das nicht möglich ist. Nach der akzeptierten Antwort hier: https://stackoverflow.com/questions/32683691/how-do-i-query-for-nil-values-with-cloudkit-js CloudKit ist ein Schlüssel-Wert-Speicher also, wenn der Wert hat nicht gesetzt, dann existiert der Schlüssel gar nicht. – garafajon

Antwort

1

Ich glaube, Ihr Problem zu this one ähnlich ist.

Anstelle von "ready == %@" sollten Sie versuchen, "(ready >= %@) AND (ready <= %@)" mit zwei Referenzwerten zum Vergleichen zu verwenden.

Verwandte Themen