CloudKit und SharedDatabase

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • CloudKit und SharedDatabase

    Hallo Zusammen,

    hätte mal eine Frage zu CloudKit und einer Shared Database. Ich benutze CloudKit in Verbindung mit CoreData zum Synchronisieren der Daten auf verschiedenen Geräten mit der selben AppleID, jetzt würde ich gerne 2 Container meiner PrivateDatabase mit anderen teilen.
    Hat das schon mal jemand hier gemacht und kann mir etwas unter die Arme greifen, bzw. gibt es eine andere Dokumentation oder ein Tutorial außer von Apple, wo man das mal nachlesen kann wie das genau funktioniert?

    Gruß Marvin
  • Hallo Marvin,

    das Teilen aus der privaten Datenbank ist eigentlich recht simpel. Was mir spontan dazu einfällt, wobei dir das sicherlich zum Großteil schon so bekannt ist:
    • Du teilst nicht einen ganzen Container sondern einzelne Records. Dazu erstellst du aus einem CKRecord ein CKShare.
    • Sagen wir, wir haben Rezepte und für jedes Rezept haben wir einen Record. Wenn du nun alle Rezepte teilen möchtest, müsstest du also für jeden Record einen Share anlegen, diesen teilen etc., was unpraktikabel ist. Daher ist eine sinnvolle Datenstruktur wichtig. Wenn du einen CKRecord teilst, teilst du automatisch dessen Child-Records mit. Das muss man sich zu Nutze machen. Um bei den Rezepten zu bleiben: Es wäre also sinnvoll, ein Record Rezeptbuch anzulegen und jedem Rezepte-Record eine Parent-Relation zu diesem Rezeptbuch hinzuzufügen. Somit kannst du nun einfach das Rezeptbuch teilen und alle darin "enthaltene" Rezepte werden automatisch ebenfalls geteilt.
    Ich finde die WWDC-Talks ziemlich verständlich zu dem Thema. Wenn du CloudKit in Kombination mit CoreData verwendest, weißt du ja wie viel Boilerplate-Code anfällt hinsichtlich Tokens, Changehandler, Merge-Handling (was ist source of truth?), Offline-Verhalten usw. Der bei der letzten WWDC eingeführte NSPersistentCloudKitContainer ist hierbei ein Segen - der übernimmt all diese Arbeit. Einziger Nachteil - es unterstützt leider kein Sharing. Hoffe stark, dass das noch nachgerüstet wird.

    LG
  • Hallo Osler,

    vielen Dank für die Antwort, ich dachte das würde so funktionieren mir das Synchronisieren mit CoreData, das man den ganzen Container teilt. OK das werde ich mir mal durchlesen.
    Noch eine Frage zum UICloudSharedViewController wie und wo kann man den denn aufrufen bzw anpassen.

    Gruß Marvin