2011-03-01 5 views
3

J'ai une application iPhone que j'ai écrite en C# en utilisant MonoTouch. Tout fonctionne bien, mais il y a quelque chose d'amusant avec les fichiers créés par mon application (une petite base de données sqLite et un fichier temporaire). Les fichiers semblent exis pendant que l'application réside dans la mémoire, mais au moment où je redémarre mon téléphone, les fichiers sont partis (?) En conséquence, l'application continue d'oublier ce qu'il fait pour ainsi dire.Les fichiers iPhone ne sont pas persistants

Comme indiqué dans les documents monotouch, je stocke mes fichiers sous le dossier «personnel». Cela fonctionne bien à la fois sur l'émulateur et mon vrai téléphone. Mais comme mentionné, les fichiers disparaissent dans l'air si je redémarre ou si je laisse le téléphone tranquille pendant quelques heures (note: tant que l'application fonctionne et a le focus, tout va bien. si vous quittez le menu).

Voici un exemple de la façon dont je reçois le chemin pour mon temp-fichier:

var documents = Environment.GetFolderPath (Environment.SpecialFolder.Personal); 
return Path.Combine(documents,"tr_activeTask.dat"); 

Je me rends compte que chaque application iPhone a son propre dossier « personnel », qui est soutenu par l'iPhone amoung autres . Est-ce que quelqu'un a connu ce comportement? Je ne peux pas comprendre la cause. Est-il en quelque sorte connecté au profil d'approvisionnement que j'utilise (test ad-hoc)?

+0

Quel chemin est retourné par GetFolderPath? Dans d'autres applications que j'ai faites, j'ai utilisé NSBundle.MainBundle.BundlePath, je crois. Je me demande si cela indique un répertoire différent. – jonathanpeppers

+0

Je pensais que le chemin du faisceau était en lecture seule? Je vais essayer l'appel que vous mentionnez et revenir 2 vous asap –

+1

Faites-moi savoir si cela fonctionne, j'ai posté une autre option. – jonathanpeppers

Répondre

0

Je viens de regarder mon application et je ceci:

BaseDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), ".."); 
Documents = Path.Combine(BaseDir, "Documents"); 

Ce dossier Documents est où je tout magasin.

+0

J'ai trouvé l'erreur. Il semble y avoir eu un conflit dans la façon dont j'ai accédé aux fichiers (j'utilise la langue norvégienne ailleurs). C'était un jour de débogage par la fenêtre. Donc, c'était mon mauvais .. J'ai également testé la réponse que vous avez donné ici. C'était un peu déroutant, parce que les deux lignes de code que vous avez données ci-dessus aboutissent fondamentalement au même chemin. Vous ajoutez ".." au chemin, ce qui signifie "cd up", puis vous ajoutez "documents". Le problème est, il était déjà dans les documents (specialfolder.personal = documents). Mais merci d'avoir pris le temps de nous aider. C'est quand j'ai testé votre chose appbundle que je suis allé "aha" :) –

+0

Ouais, j'ai quelques autres chemins en dessous de ce code qui nécessitent le ".." tels que: "Library/Preferences" et "Settings.bundle". – jonathanpeppers

Questions connexes