Wie aktualisiert man ein Objekt in Realm Swift?

8

Ich versuche zu lernen, wie man Realm Swift und Charts benutzt, damit ich sie beide in einer App, die ich baue, verwenden kann und ich habe eine Menge Zeit damit verbracht, Realm herauszufinden. Irgendwann plane ich, Charts in meine Realm-DB zu schauen und dann die Charts basierend auf den Daten anzuzeigen, aber bevor ich das tue, muss ich prüfen, ob ein Realm-Objekt existiert, wenn nicht, um es zu erstellen Dann und wenn der Benutzer die App verwendet, füge 'Zählungen' zu diesem Datensatz hinzu und aktualisiere das Diagramm entsprechend.

Während ich lerne, habe ich das in Schritte unterteilt. Ich habe bereits herausgefunden, wie man überprüft, ob ein Datensatz existiert und wenn es nicht so aufgebaut ist:

Mein Realm-Modell:

%Vor%

Ich habe überprüft, dass sein Arbeiten über die Realm Browser App funktioniert.

Als nächstes auf meiner To-Do-Liste soll herausgefunden werden, wie man einen Datensatz für den "heutigen Datensatz" aktualisiert. Um dies zu tun, habe ich eine Schaltfläche erstellt, also würde ich versuchen, dies zu tun. Ich habe gegoogelt und gegoogelt und bin zum Nachdenken gekommen, da ich keinen Primärschlüssel in meinem Modell verwende, den ich zuerst den spezifischen Datensatz löschen muss und ihn dann mit den neuen Daten wieder hinzufügen muss. Ich kann nicht für das Leben von mir herausfinden, wie man das macht, basierend auf der Realm-Dokumentation und noch mehr googeln. Das ist, was ich habe, obwohl es nicht funktioniert:

%Vor%

Wenn ich auf die Schaltfläche btnUpdate1MW tippe, erhalte ich den folgenden Fehler in Xcode:

  

Beenden der App aufgrund der nicht abgefangenen Ausnahme 'Ungültiger Wert', Grund: 'Erwartetes Objekt vom Typ Datum für Eigenschaft' Datum 'am Objekt vom Typ' WorkoutsCount ', aber erhalten: 2017-04-24 07:00:00 +0000 "

    
jammyman34 25.04.2017, 23:08
quelle

1 Antwort

22

Beim Aktualisieren von Objekten wird nur einer Eigenschaft innerhalb einer Schreibtransaktion ein Wert zugewiesen. Siehe unsere Dokumentation.

Ссылка

Sie müssen also kein Objekt löschen und dann hinzufügen. Weisen Sie der Eigenschaft in der Schreibtransaktion wie folgt einen neuen Wert zu.

%Vor%

Zu Ihrer Information: Bitte verwenden Sie keine String-Interpolation in einer Abfrage. Das Generieren einer wichtigen Zeichenfolge durch Zeichenfolge-Interpolation ist eine schlechte Übung. Verwenden Sie die Zeichenfolgenersatz-Syntax von NSPredate wie filter("date = %@", removeTodaysItem) .

    
kishikawa katsumi 26.04.2017, 16:02
quelle

Tags und Links