3 Stimmen

Parse.com: Wie überprüft man richtig, ob ein Feld leer ist?

Ich frage das im Kontext einer iOS / Swift-App:

Beim Abrufen eines Objekts von Parse mit einer Abfrage habe ich früher leere Felder überprüft, indem ich sie gegen nil überprüft habe. if != nil.... dann dies usw....

Anscheinend ist dies nicht der richtige Weg, um dies zu tun, denn auch wenn ein Feld bei Parse leer ist, wird es von Swift NICHT als nil betrachtet.

Also, was soll man prüfen, um festzustellen, ob ein Feld leer ist oder nicht, und für die verschiedenen von Parse unterstützten Typen: strings, Number, Array.....?

Bearbeitung: Es gibt Antworten für Objective-C, die in Swift nicht funktionieren, wo Sie es außer bei einem booleschen Wert GEGEN nil vergleichen MÜSSEN (was hier ein Problem verursacht) oder auf andere Weise überprüfen müssen, ob es vorhanden ist oder nicht.

2voto

Kevin Pimentel Punkte 2068

Sie würden whereKeyExists: verwenden

Überprüfen Sie die Parse-Dokumentation

Wenn Sie Objekte abrufen möchten, die über einen bestimmten Schlüssel verfügen, können Sie whereKeyExists verwenden. Wenn Sie hingegen Objekte abrufen möchten, die über keinen bestimmten Schlüssel verfügen, können Sie whereKeyDoesNotExist verwenden.

// Findet Objekte, bei denen der Wert für score vorhanden ist
[query whereKeyExists:@"score"];

2voto

Robert Brax Punkte 5713

Also hier ist, was ich nach einigen Untersuchungen gefunden habe:

Ein String-Feld, das leer aussieht im Parse Explorer, enthält tatsächlich "". Nur wenn das Feld speziell "undefined" enthält, ist es nil, was man mit === vergleichen kann und nicht mit ==. Keine Ahnung warum, wenn jemand es weiß....

Andere Felder als String können kein "" enthalten. Sie enthalten entweder einen Wert oder sind undefiniert.

Wenn du also wissen musst, ob ein Feld nil ist oder keinen Wert enthält, vergleiche es mit == "" und === nil, wenn es ein String ist, und verwende === nil, wenn es kein String ist.

1voto

Vincent Cheong Punkte 132

Dies ist das, was ich verwendet habe, um zu überprüfen, ob ein Feld, das eine Datei enthält, null ist. Da der Wert (undefined) oder (null) sein kann.

func isParseNull(obj : AnyObject!) -> Bool {
    if obj == nil {
        return true
    }
    if obj as NSObject == NSNull() {
        return true
    }
    return false
}

0voto

Rogog Punkte 11

Ich bin mir ziemlich sicher, dass die Parse-Dokumentation !=nil sagt, aber du könntest es versuchen

entity == ""

0voto

skittle Punkte 238

Ich würde die String-Klasse erweitern und Folgendes tun

   extension String {
         func isOnlyEmptySpacesAndNewLineCharacters() -> Bool {
         return self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).length == 0
         }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X