Domanda

Come faccio a creare e scrivere in un file in un MonoTouch per iPhone?

Il file dovrebbe persistere tra avviata l'applicazione, quindi credo che deve essere posizionato da qualche parte nel bundle App (documenti o risorse?).

È stato utile?

Soluzione

[ Nota: La mia risposta è abbastanza approfondita perché io non conosco il tuo livello di comprensione per quanto riguarda fasci app o la struttura del piccolo mondo in modalità sandbox della tua applicazione per iPhone - scuse se copro le cose che già conosci - io preferisco scrivere un po 'troppo che troppo poco, e per aggiungere un po' di perché quando si parla di come ...]

Hai alcune opzioni (ovviamente). Sto assumendo che già familiarità con Net in una certa misura e che la tua domanda è più su come fare questo il modo iPhone.

Ogni applicazione per iPhone (e vedrete la stessa cosa per le applicazioni su OS X) è un "pacchetto" che non è un eseguibile in senso tradizionale, ma in realtà una gerarchia di cartelle all'interno del quale la vostra app vite binari ( insieme alle risorse, le impostazioni, ecc.).

A causa di come uber-sandbox applicazioni per iPhone sono, non hanno accesso alle cartelle condivise si sarebbe normalmente in grado di utilizzare quando si fa lo sviluppo desktop (avendo, ad esempio, una cartella comune Documenti che vive sotto un utente di home directory a cui le applicazioni hanno accesso).

Al contrario, la vostra applicazione ha una propria gerarchia di cartelle che è come un proprio set personale delle cartelle che in genere essere condivisi tra le applicazioni.

Il modo più semplice per vedere che cosa struttura delle cartelle della tua app assomiglia al telefono è quello di guardare la cartella simulatore iPhone utilizza per l'installazione di app, impostazioni, bla bla bla. Sulla mia macchina (non ricordo se questo è configurabile, ma è probabilmente lo stesso sul vostro sistema), è possibile ottenere la cartella da questo percorso:

~/Library/Application Support/iPhone Simulator

All'interno di questo, c'è una cartella utente / Applicazioni che contiene le applicazioni installate al simulatore. Drill-down in una qualsiasi di queste cartelle, e si può vedere la struttura delle cartelle vostra applicazione avrà accesso al telefono.

Per memorizzare i file che ci si piace mantenute nelle sessioni di app, cartella Documenti della tua app è il punto. Non è l'unica scelta per la creazione di file, ma è la scelta destro per questo lavoro. Oltre ai file di essere correttamente conservato, mantenendoli nella cartella Documenti sarà anche farli supportati da iTunes quando le sincronizzazioni utente.

Con MonoTouch, è possibile ottenere il percorso della cartella Documenti della tua app con Environment.GetFolderPath(Environment.SpecialFolder.Personal);

Se vuoi per verificare il lavoro svolto, questo è un codice estremamente semplice che ti scrivere un file chiamato "out.txt" per cartella Documenti della tua app. Questo codice legge anche il contenuto del file per mostrare che è stato creato - per ulteriori verifiche, passare alla cartella Applicazioni del simulatore, ordinare le cartelle app in base alla data Sono state apportate, drill-down nella più recentemente modificato, e guardare dentro i suoi documenti cartella - troverete "out.txt" (non è possibile trovare la cartella della tua app nome perché, quando si installa la vostra applicazione, essa viene farcito all'interno di una cartella con un nome come "2B3CA854-FADB-4DDC-9732-0E61B3DD8D8C "- l'ordinamento le cartelle in base alla data sono stati modificati si punta al app più recentemente modificato che, in questo caso, è tutto ciò applicazione contiene il codice seguente):

// For this to function, don't forget "using System.IO;"

// If you're just playing around with this to see it work, place it inside
// your AppDelegate's "FinishedLaunching" method in main.cs

string path = Environment.GetFolderPath (Environment.SpecialFolder.Personal);
string filePath = Path.Combine(path, "out.txt");

// File.WriteAllText will create a file and then write text to it. If the
// file already exists, File.WriteAllText will overwrite it.
File.WriteAllText(filePath, "Howdy, world.");

// Now we prove it worked by reading the contents of the file and then
// printing them to the console...   
string text = File.ReadAllText(filePath);
Console.WriteLine(text);

Quindi, l'unica cosa qui che è davvero iPhone-specifica è sapere che le mappe "Environment.SpecialFolder.Personal" nella cartella Documenti della tua app. Oltre a ciò, è .Net come al solito.

E, ancora una volta, questo è stato probabilmente eccessivo, ma ho voluto rispondere sufficientemente a fondo per tutti coloro che lo vede - speriamo che questo aiuta:)

Altri suggerimenti

Il seguente Come dal sito Xamarin.iOS guida ha alcune indicazioni su dove memorizzare i file:

http://docs.xamarin.com/guides/ios/application_fundamentals/ working_with_the_file_system /

Si può fare qualcosa di simile in fase di esecuzione:

using (StreamWriter writer = new StreamWriter (Path.Combine (Environment.SpecialFolders.Documents, "yourfilename.ext"))) { }

e che sarà creare il file. Per aprirlo per la lettura, utilizzare lo stesso Path.Combine() ma con StreamReader .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top