parse.com-Datenspeicher pinnt nicht mehr als ein nicht gespeichertes Objekt

9

Innerhalb einer Aufgabe und ohne Internetverbindung erstelle ich ein ParseObject und referenziere ein anderes ParseObject und den aktuellen Benutzer darin. Ich hefte es dann an den lokalen Datenspeicher, um es später zu speichern (diese Klassen und der Datenspeicher werden korrekt initialisiert).

%Vor%

Ich folge dies mit einer schnellen Abfrage, um alle Bewertungen von diesem Pin abzurufen.

%Vor%

Das Problem: Es scheint nur eine Bewertung gepinnt zu sein. Eine zweite Bewertung wird nicht gespeichert, obwohl parse Erfolg meldet.

Das erste Pinning (null objectId ist ok und erwartet) einer Bewertung für 'Albury' liefert diese in einer nachfolgenden Abfrage für alle Abfragen gegen den Pin:

%Vor%

Zweitens für 'Arapuni':

%Vor%

Andere Dinge versuchten:

  • pinEventuell ("nicht gesendet")
  • pin () ohne Label
  • save () unmittelbar danach und verwirft die Verbindungsausnahme
  • Entfernen von Benutzer = aktuelle Benutzerklausel von überall
  • allgemeine Abfragen für den Datenspeicher als Ganzes bestätigen, dass zusätzliche Objekte überhaupt nicht gespeichert werden

Nachdem Sie online gegangen sind und die Bewertung gespeichert haben (was eine objectId ergibt), wird eine neue Offline-Bewertung korrekt fixiert, aber das Problem wiederholt sich dann mit einer zweiten Offline-Bewertung.

Ich habe das Gefühl, dass es sich um einen Fehler in der Android SDK-Bibliothek von parse.com handelt. Es scheint, als ob der Datenspeicher eine eindeutige Integritätsbedingung für objectId erzwingt, aber nicht gespeicherte Objekte haben noch keine objectId.

Hat jemand anderes auf dieses Problem gestoßen oder kann es eine Arbeit vorschlagen?

    
Tom 10.05.2015, 22:22
quelle

1 Antwort

3

Das ist wirklich seltsam.

Wie ich in den Kommentaren geschrieben habe, ging es bei meinen Problemen hauptsächlich darum, ungespeicherte Objekte zu entfernen, und so begann ich, ein Projekt zu erstellen, das dem Verhalten in meiner App ähnelte, mit einer reproduzierbaren Demonstration des Problems.

Das Android Studio-Projekt finden Sie hier: Ссылка

Über das Projekt

Die Idee, die ich versucht habe zu realisieren, ist, eine Aufgabe (ParseObject) mit einem Protokolleintrag (ein anderes ParseObject) und ein JSONArray in einem Objekt namens TaskSummaryHolder zu verbinden.

Wenn diese 3 Entitäten lokal miteinander verbunden sind, kann ich viele Informationen in das JSONArray schieben und die Informationen nur von Zeit zu Zeit aus dem JSONArray in den Protokolleintrag schieben.

Das zusammenfassende Objekt, das alle zusammen bindet, soll nie online gespeichert werden.

Dieses Schema sollte auf eine Reihe unterschiedlicher Aufgaben angewendet werden können, so dass eine TaskSummaryHolder-Instanz auftretende Ereignisse über einen Zeitraum hinweg speichern kann, während eine andere z. GPS-Einträge.

Momentan habe ich etwas ähnliches zu dem, was im Projekt in einer Live-App gezeigt wird, aber aufgrund des Unpinning-Problems lösche ich derzeit die Zusammenfassungen, statt die Verbindung zu lösen (Spalten entfernen und fixieren).

Problem 1 Entsperren

Meine erste Beobachtung war das

%Vor%

Hat nicht immer funktioniert, während

%Vor%

Sieht zuverlässiger aus. Nur ein bisschen seltsam, wenn man vor dem Lösen der Verbindung abfragen muss, ob das Ziel darin besteht, einen Pin aus dem Datenspeicher zu entfernen.

Problem 2 Pinning

Zu meiner Überraschung bin ich genau auf das Problem gestoßen, das Sie beschreiben. Im Testprojekt hole ich zwei Aufgaben online und füge jeweils eine TaskSummaryHolder-Instanz hinzu. Nur die erste Instanz wurde lokal gepinnt.

Inspiriert von Ihrer Beschreibung des Problems habe ich versucht, es anheften und dann speichern lassen (siehe TaskSummaryHolder Zeile 114).

Danach funktionierte es und ich konnte das Problem von da an nicht reproduzieren. Pinning und Unpining verhielten sich auch nach der Deinstallation und / oder dem Neustart des Telefons erwartungsgemäß.

Es könnte interessant sein, wenn Sie versuchen würden, das Projekt auszuführen und zu sehen, wie es sich verhält.

    
cYrixmorten 17.05.2015 00:42
quelle

Tags und Links