Les loggings CloudKit supprimés réapparaissent

Je construis une application iOS en utilisant CloudKit.

Cela devrait permettre à un user d'append, de modifier et de supprimer des Products dans le nuage. L'user peut les organiser dans des dossiers. Ces dossiers ne sont que d'autres types d'loggings dans cloudkit. Il n'y a aucune limite aux niveaux de dossier que l'user peut utiliser, car n'importe quel dossier peut simplement contenir un CKReference dans son dossier parent. Toutes les communications CloudKit dans mon application sont effectuées dans une class CloudKitController dédiée

Tout cela fonctionne, mais arrête de travailler après un certain time sans raison claire.

Lorsque je teste mon application, je n'effectue même pas de dossiers users à plusieurs niveaux. Cependant, après l'avoir utilisé un certain time (jusqu'à une semaine), tous les loggings supprimés semblent réapparaître sur CloudKit. Quelques notes à ce sujet:

  • Lorsque je réinitialise mon tableau de bord CloudKit et que je recommence, cela fonctionne parfaitement. Aucun changement de code effectué.
  • Évidemment, je suis constamment en train d'éditer mon code car l'application est en développement. Cependant, je ne modifie généralement pas les types de données dans mon code qui doivent être stockés dans CloudKit. Quand je le fais, cette question ne se pose pas immédiatement après
  • Les modifications apscopes au tableau de bord CloudKit (par exemple, l'ajout de types de données) ne provoquent pas ce problème
  • Je ne stocke aucun logging localement, comme dans datatables de base. Ils sont assis dans un singleton aussi longtime que je les utilise
  • Quand je vais à CloudKit Dashboard, le type d'logging de produit montre qu'il a par exemple 13 instances. Parfois, c'est tellement mauvais, que mon application charge en réalité plus de 100. Je peux aussi les voir quand je vais sur le recordZone, mais toujours le RecordType dit qu'il a seulement 13 instances
  • La suppression de ces loggings dans CloudKit Dashboard les fait disparaître seulement pendant un moment. Lorsque je recharge la page, ils apparaissent à nouveau.

Cela fait un moment que ça marche, et j'ai vérifié mon code, l'Apple Library et google plusieurs fois, mais je n'arrive pas à comprendre ce qui cause ce problème.

Question: Quelqu'un sait-il quelque chose sur la façon de surmonter ce problème? Comme je l'ai dit, cela fait des semaines que je cours dans ce domaine, et le fait de réinitialiser mon tableau de bord CloudKit ne le «guérit» que pendant une semaine, puis il réapparaît. Je serais également plus qu'heureux de postr n'importe quel code si cela vous aiderait à répondre à ma question. Je n'ai pas posté de code au départ, car je n'ai aucune idée de ce que le code pourrait causer.

Toute réponse serait très appréciée

Apple a répondu à un rapport de bug que j'ai déposé que ce problème devrait être résolu avec iOS 9. Jusqu'à présent cela semble être juste que ce problème n'a pas encore eu lieu, mais s'il vous plaît laissez-moi savoir si cela dérange encore quelqu'un.

Cela peut se produire car la trace du tableau de bord ci-dessous suggère qu'Apple utilise la technique Tombstone pour répliquer les suppressions dans une database dissortingbuée. L'un des nœuds peut avoir un bogue ou une ancienne version du logiciel et synchronise le faux champ de la pierre tombale sur le système, ce qui entraîne la restauration de l'logging lui-même. Ou peut-être que votre code fait quelque chose qui ramène accidentellement ces loggings supprimés à la vie? Une solution de contournement serait d'utiliser votre propre champ boolean soft-delete et voir comment cela se comporte.

 [{ "results": [{ "tombstone": false "id": "NewItem", "etag": "ibgs5bpj", "recordType": "Items", "fields": { "name": "Malc", "location": { "latitude": 38.0, "longitude": -122.0 } }, "conflictLosersEtags": [], "created": { "timestamp": 1435514295943, "user": "_0ac573ae502ca7ca9d763a84b27bc42a", "device": "_2" }, "modified": { "timestamp": 1435514295943, "user": "_0ac573ae502ca7ca9d763a84b27bc42a", "device": "_2" } }, ... 

En ce qui concerne le nombre d'loggings, oui, les miens sont également inexacts.