RestKit Objekt-Mapping-Beziehungen ohne KVC

8

Nachdem ich das Objekt Mapping-Guide auf GitHub für RestKit gelesen hatte, verschwand mein Problem nicht vielleicht kann jemand sagen, ob RestKit mit der folgenden Idee umgehen könnte.

Entitäten mit Beziehungen

%Vor%

JSON (Firma)

%Vor%

JSON (Kontakt)

%Vor%

Aufgrund von Einschränkungen kann ich die zugehörigen Kontakte nicht in die Firmen verschachteln (sonst würde ich das nicht schreiben), also möchte ich diese verwenden, wenn die Daten beim Import gemappt werden.

Frage

Ist es möglich, jeden Kontakt mit seinem zugehörigen Unternehmen (identifiziert durch das Attribut companyID ) beim Import mit bestimmten Methoden durch RestKit abzubilden?

Wenn nicht, würde ich gerne die beste Lösung dafür wissen. Danke!

Hintergrund

In meinem ersten Build dieser App habe ich die Objekte den gegebenen Entitäten (ohne Beziehungen) zugeordnet und alle zugehörigen Kontakte zu einer Firma mit dem Prädikat companyID =% @ abgerufen. Aufgrund der Menge an Daten (4000+ Firmen, 7000+ Kontakte) dauert das Abrufen aller zugehörigen Kontakte ungefähr eine Sekunde - daher kam ich auf die Idee, Beziehungen zu verwenden (was perfekt mit lokalen Dummydaten funktioniert).

Lösung

Mit Hilfe der unten angegebenen Antwort sieht meine aktuelle Zuordnung wie folgt aus (RestKit v.10).

%Vor%

    
flashfabrixx 16.02.2012, 20:29
quelle

1 Antwort

12

Ja, RestKit kann diese Beziehung zur Kartierungszeit für Sie hydratisieren. In Ihrem RKManagedObjectMapping für Ihr Kontaktmodell müssen Sie Folgendes tun:

  • Fügen Sie der übergeordneten Firma eine Beziehungszuordnung hinzu: [objectMapping mapRelationship:@"company" withMapping:companyMapping]
  • Ordnen Sie das companyID-Attribut Ihrem Kontaktmodell zu
  • Stellen Sie sicher, dass das primaryKeyAttribute für beide Klassen konfiguriert ist
  • Instruct RestKit, um die Beziehung zu hydratisieren: [objectMapping connectRelationship:@"company" withObjectForPrimaryKeyAttribute:@"companyID"];

Nachdem RestKit die Zuordnung einer Nutzlast abgeschlossen hat, wird sie durch die Sammlung zurückgehen und alle Beziehungen hydratisieren. Die Verarbeitung wird erst nach dem Mapping zurückgestellt, falls die Nutzlast tatsächlich Objekte erzeugt, die Sie für die Verbindungen benötigen.

Im Entwicklungszweig steht Ihnen ein alternativer Workflow zur Verfügung. Anfang dieser Woche habe ich Unterstützung für das Hydratisieren einer has-many-Beziehung hinzugefügt, indem ich ein Array von IDs in der Nutzlast verwendet habe. Dadurch können Sie stattdessen die Liste der Kontakte senden, die zu einem Unternehmen gehören. Es kann für Ihren Anwendungsfall effizienter sein.

Zusätzliche Details von meinem Post zur RestKit-Mailingliste: Ссылка

    
Blake Watters 16.02.2012, 20:43
quelle