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:
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.