2015-05-28 6 views
10

Bevor ich zu weit in meine Frage komme. Mein Ziel, das Ihre Antworten beeinflussen kann, ist das Entfernen von Object Daten, wenn es nicht mehr in der Cloud ist.Löschen Sie alle Daten von bestimmten Realm Objekt Swift

Also, wenn ich ein Array haben ["one", "two", "three"]

Dann in meinem Server entferne ich "two"

ich mein Reich wollen die Änderung zu aktualisieren.

Ich denke, der beste Weg, dies zu tun ist, alle Daten in der spezifischen Object zu löschen, dann meine REST API aufrufen, um die neuen Daten herunterzuladen. Wenn es einen besseren Weg gibt, lass es mich wissen.

Okay, hier ist mein Problem.

Ich habe ein Objekt Notifications()

jedes Mal meine REST-API aufgerufen wird, bevor es irgendetwas herunterlädt ich dies ausgeführt wird:

let realm = Realm() 
let notifications = Notifications() 
realm.beginWrite() 
realm.delete(notifications) 
realm.commitWrite() 

ich diesen Fehler nach der Ausführung: Can only delete an object from the Realm it belongs to.

so Ich habe so etwas versucht:

for notification in notifications { 
    realm.delete(notification) 
} 
realm.commitWrite() 

Der Fehler, den ich in xcode bekommen habe, ist folgender: "Type Notifications does not conform to protocol 'SequenceType'

Nicht wirklich sicher, wohin ich von hier aus gehen soll.

Nur versuchen, Realm herauszufinden. Völlig neu, um es

Hinweis: realm.deleteAll() funktioniert, aber ich will nicht alle meine Reich gelöscht, nur bestimmte Objects

Antwort

23

Sie für diese suchen:

let realm = Realm() 
let deletedValue = "two" 
realm.write { 
    let deletedNotifications = realm.objects(Notifications).filter("value == %@", deletedValue) 
    realm.delete(deletedNotifications) 
} 

oder vielleicht dies:

let realm = Realm() 
let serverValues = ["one", "three"] 
realm.write { 
    realm.delete(realm.objects(Notifications)) // deletes all 'Notifications' objects from the realm 
    for value in serverValues { 
    let notification = Notifications() 
    notification.value = value 
    realm.add(notification) 
    } 
} 

Obwohl im Idealfall würden Sie einen Primärschlüssel auf Notifications werden einstellen, so dass Sie einfach die, vorhandene Objekte Ratte aktualisieren Sie als den extremen Ansatz, alle Ihre lokalen Objekte zu vernichten, um sie alle (oder fast) neu zu erstellen.

Verwandte Themen