Solution simple pour sauvegarder un écran
Gercofis
Membre
A-t-on une solution simple pour sauvegarder un écran avec les valeurs ?
Je veux dire retrouver les valeurs même si on a réinstallé ou killé l'App ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Tu veux dire que l'app reviendrait à l'écran en question ou bien qu'en avoir une image suffirait ?
Non ..
Il faut sauver l'état de l'application (le Modèle des données et de l'interface dans un fichier de persistance) quand l'AppDelegate détecte la plongée en background.
Oups, je n'avais pas tilté sur le " réinstallé " l'application. Cela deviens vraiment compliqué. Le chat sur canapé rouge doit avoir raison, même si je n'ai jamais étudié le sujet. Il faut créer un fichier de persistance sur le compte iCloud de l'utilisateur, pour éviter la destruction des données si l'application est effacé du device.
l'image c'est déjà ce que j'ai fait...
Réinstallé eut été un plus, effacé du device, je veux dire quand on développe il y a réinstallation !!
Ma question était de savoir s'il existait une solution un peu toute faite, mais il semble bien que non !!
@colas_ Keychain c'est quoi au juste ?
Même si ton app est effacée du device puis réinstallée les données sont encore sauvegardées sur le device.
Cela permet par exemple de n'offrir qu'une seule fois une période d'essai, etc.
Je ne suis pas sûr d'avoir compris pourquoi tu as besoin de cette persistance des données si l'app est réinstallée. Si c'est juste car quand tu développes l'application est réinstallée, alors opte pour un mécanisme plus simple comme NSUserDefaults
Hello,
À priori tu as le State Preservation and Restoration. Méconnu et peu utilisé mais qui répond à tes besoins sauf dans le cas où ton application est supprimé.
https://developer.apple.com/library/content/featuredarticles/ViewControllerPGforiPhoneOS/PreservingandRestoringState.html
Tout ça semble bien correspondre a mon besoin, mais je suis quand même un peu, voir beaucoup largué ?
En plus l'exemple n'est pas en Swift ?
Stroryboard ID et/ou Restauration ID servent a quelque chose comme ça ?
Un tuto peut-être ?
Tu as ce tutoriel : https://www.raywenderlich.com/117471/state-restoration-tutorial
ça semble être complet après c'est toujours bien de lire la doc pour comprendre le concept
Merci, ça a bien l'air de correspondre a ce que je cherche, donc je potasse, je potasse...
Je ne sais pas comment modifier ma réponse maintenant, donc ce tuto est en Swift 2.2 ça ne passe donc pas tout seul. Mais j'ai trouvé une piste plus récente, donc je cogite, je teste et je publie si ça beigne...
Sans que ça me prenne la tête une question me taraude un peu depuis que j'ai posté ce sujet, peut-être assez mal.
En fait j'aurais dû comment on sauvegarde l'état d'une application ?
Certaines applications se réouvre dans l'état ou elles étaient a la fermeture, plus ou moins bien d'ailleurs.
C'est ce que je cherchais initialement c'est pour ça que j'avais mis Solution Simple
Il suffit de sauvegarder tous les paramètres de ton application te permettant de la restaurer dans le même état...
Pour moi dans iPocket Draw, il s'agit :
Il est vrai qu'ainsi, la restauration peut être différente de l'état initial, par exemple si un écran annexe de réglage était ouvert et que l'app est tuée après avoir été quittée.
Rien ne t’empêche d’associer une référence à chaque écran de l’application. Et de mémoriser la référence de l’écran courant, de manière à restaurer l'affichage exactement dans le même état qu’à la destruction/plongée en background de l’application.
Si tu me trouves un Tuto qui fait ça ?
@Eric P. C'est bien ce que je suis en train de faire. Mais la solution Draken semble plus simple et pour le cas présent surtout me suffit.
Euh .. ma solution c’est exactement celle d’Eric, avec un élément en plus pour gérer le cas particulier dont il parle.
Le principe est facile à comprendre. Imaginons par exemple une application avec 3 viewControlers que je vais appeler ecran_A, ecran_B et ecran_C.
Tu crées une clef ecranActif dans ton système de persistance (CoreData par exemple) pour mémoriser l’écran actif. A chaque activation d’un viewControler celui-ci inscrit sa référence dans la clé. Par exemple le viewControlerA écrit la chaîne « ecran_A » dans la clef ecranActif.
Si l’application est tuée par iOS ou l’utilisateur, la clef ecranActif contient toujours le nom du dernier écran actif. Au prochain démarrage de l’application, dans le code d’initialisation (AppDelegate) tu commences par lire la valeur de la clef pour savoir quel viewControler affiché en premier.
Cela nécessite d’ajouter un peu de code dans l’AppDelegate, mais ce n’est pas bien compliqué.
Merci mais ma mini application ne comporte qu'un écran et justement je n'ai que le problème de récupérer les valeurs saisies ?
Bah alors, je ne comprend pas où est le problème. Tu sauves les valeurs des données de ton application dans la persistance à chaque modification, pour les récupérer au redémarrage de l’application.
On se comprend mal... Bien sûr que c'est ce que j'ai prévu je pensais simplement qu'il y avait une solution plus simple et plus globale du genre saveSreen (avec tout ce qu'il y a dedans...
C'est que je n'ai trop rien lu dans ce sens...
Pour tout dire j'avais quelques espoirs dans l'utilisation de storyboard ID, au fait ça sert a quoi ce truc et la coche "Use Storyboard ID" ?
C'est plus facile d'utiliser le UIStateRestoring protocol qui fait partie d'un UIViewController.
Il ne faut que cocher "Use Storyboard ID" pour le "Restoration ID"
et ajouter du code comme ci-dessous pour ajouter l'état des données :
Il n'aime pas NSCoder et NSCodable ???
Qui ne l'aime pas ?
Xcode
Je crois a la réflexion que cette solution dépasse mes compétences actuelles