2016-11-03 2 views
0

Ich möchte eine Liste von Realm-Ergebnissen filtern, wenn die id Null oder leer ist.Realm filter leere Objekte in einer Liste von Ergebnissen

Hier ist eine Demo-Liste der Ergebnisse:

{ 
    "id":"1" 
    "name": "first" 
}, 
{ 
    "id":"2" 
    "name": "second" 
}, 
{ 
    "id":"3" 
    "name": "third" 
}, 
{ 
    "id":"" //here it can be empty 
    "name": "" 
}, 
{ 
    "id": nil // here it can be nil 
    "name": nil 
} 

Ich versuche mit der ID wie diese zu filtern, aber es Absturz:

lazy var declarations: Results<Declaration> = { 
     let realm = try! Realm() 
     return self.realm.objects(Declaration.self).filter("id == " "") 
    }() 

Hier ist das Modell:

import RealmSwift 

public final class Declaration: Object { 
    dynamic var id: String = "" 
    dynamic var name: String = "" 

    override public static func primaryKey() -> String? { 
     return "id" 
    } 
} 

Antwort

0

.filter("id == " "") würde definitiv zum Absturz bringen, weil Sie diesen Zitaten nicht entgangen sind. Es könnte .filter("id == \"\"") benötigen, aber nur mit einfachen Anführungszeichen wäre besser.

Da Realm Abfragen NSPredicate entsprechen, das Kopieren der Antwort von this question, wenn Sie einfach überprüfen möchten, ob ein Realm-Eigenschaft nicht leer oder null ist, sollten Sie nur in der Lage sein, die Abfrage mit

lazy var declarations: Results<Declaration> = { 
    let realm = try! Realm() 
    return self.realm.objects(Declaration.self).filter("id != nil AND id != ''") 
}()