2017-10-10 6 views
0

J'ai donc une application dans laquelle les utilisateurs prennent des photos. Je sauvegarde ces photos dans la bibliothèque et les affiche quelque part dans l'application. Tout cela fonctionne très bien. Toutefois, chaque fois que j'exécute l'application à partir de Visual Studio (à l'exclusion de la session lorsque les photos sont prises), ces images n'apparaissent pas. Lancer l'application à partir de mon appareil directement (donc pas en mode de débogage) fonctionne comme prévu - je peux voir les images très bien.Xamarin iOS - Les images générées par les utilisateurs disparaissent chaque fois que je cours à partir de Visual Studio

Je sais que doit être un moyen pour que cela fonctionne - la base de données locale n'est pas effacée chaque fois que je cours à partir de Visual Studio par exemple - mais je ne peux pas pour la vie de le comprendre.

J'ai essayé d'enregistrer les images ailleurs (Ressources, Application Data, MyDocuments racine, etc.), mais en vain.

Contenu de GetImagePath(string filename) afin que vous puissiez voir où je suis les sauver:

string libPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "..", "Library"); 
return Path.Combine(libPath, filename); 

Tout le monde ici a des idées? Je pense qu'une fois l'application déployée, ça devrait aller, mais c'est toujours énervant d'avoir ce genre de choses pendant que je me développe.

Merci d'avance!

EDIT: Voici mon économie et chargement du code: Economie: NSData.FromArray(data).Save(path, true, out error)

Je les afficher comme ceci: Content.Content = new Image { Source = filename }

+0

Pouvez-vous mettre en place votre code qui enregistre les images et aussi comment vous accédez aux images? – lowleetak

+0

@lowleetak J'ai édité la question pour vous, cependant, cette information ne me semble pas pertinente? Ils apparaissent la première fois et toutes les fois suivantes jusqu'à ce que j'implique Visual Studio. Ils ne disparaissent pas jusqu'à ce que je lance l'application de VS. – Maverick

+0

pour Android, il y avait un paramètre qui écraserait les fichiers locaux de l'application chaque fois que vous déployiez. Je n'ai jamais vu cela se produire sur iOS. Et vous êtes sûr que cela se passe uniquement sélectivement aux images et non aux fichiers db? Avez-vous essayé d'utiliser XCode pour regarder le système de fichiers de l'application? – Jason

Répondre

0

Ainsi, après un peu de jouer autour et pas à pas dans le code que j'ai trouvé la réponse.

Vos données dans iOS sont stockées dans un conteneur d'applications - le GUID associé à ce conteneur change à chaque fois que vous le construisez sur l'appareil. Comme je stockais le chemin d'accès complet au lieu du nom de fichier, les images ne s'affichaient pas après un redéploiement, car le chemin d'accès complet recherchait un conteneur d'applications qui n'existait plus. Le contenu des dossiers Library et Documents est copié dans le nouveau conteneur d'applications à chaque fois, mais l'utilisation du chemin d'accès complet avant que la version en cours ne soit créée pour le périphérique ne peut pas le trouver.

Activer le stockage du nom de fichier uniquement et obtenir le chemin d'accès complet à chaque fois que j'ai besoin d'afficher une image a résolu ce problème.

J'ai remarqué ce problème au cours du développement, mais en production il y aurait eu des problèmes où des images n'étaient pas trouvées après une mise à jour de l'application.