Core Data / CloudKit: Reset einer Relationship auf <nil> nicht möglich

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

    Aufgrund der Corona-Krise: Die Veröffentlichung von Stellenangeboten und -gesuchen ist bis 31.12.2020 kostenfrei. Das beinhaltet auch Angebote und Gesuche von und für Freischaffende und Selbstständige.

    • Core Data / CloudKit: Reset einer Relationship auf <nil> nicht möglich

      Moin Leute!

      Hier wieder eine Absonderlichkeit, die bei Verwendung eines NSPersistentCloudKitContainer auftritt ... zur Warnung anderer, aber ich würde mich auch sehr über eine Lösung freuen.

      Ich habe one-to-many Relationship zwischen zwei Entitäten, in meinem Fall einem Artikel, der zu einer Kategorie gehört; zu jeder Kategorie gibt es natürlich mehrere Artikel. Das Ganze wird in Core Data mit einer optionalen Relationship inkl. inverser Beziehung abgebildet und per NSPersistentCloudKitContainer über Cloud Kit synchronisiert. So weit, so gut.

      Wenn nun bei einem Artikel die Kategorie-Zuordnung entfernt wird, setze ich das entsprechende Attribut auf nil, speichere den Kontext und die Änderung ist persistent ... solange ich lokal in Core Data arbeite. Ist die Synchronisierung aktiv, ist nach kurzer Zeit (eben der Synchronisierung) die Beziehung wieder im alten Zustand. Es gibt keinen Fehler, keinen Warnhinweis. Ich zweifelte zunächst an meinem Code zum Entfernen des Attributinhaltes oder des Kontext-Speicherns. Tatsächlich scheint es aber an der Abbildung von Core Data Relationships in CloudKit zu liegen. Dieser SO-Artikel beschreibt den Effekt genau, leider auch ohne Lösung.

      Ich habe nun in meinen Auswahllisten (hier: Kategorie) einen Dummy-Eintrag "nicht zugewiesen", der benutzt werden muss, wenn der Artikel keiner Kategorie angehört. Mit anderen Worten, es ist immer eine Beziehung gesetzt. Unschön, aber ich sehe keine andere Lösung.

      Mattes
      Diese Seite bleibt aus technischen Gründen unbedruckt.