Pergunta

Como eu poderia criar e gravar em um arquivo em um aplicativo de iPhone Monotouch?

O arquivo deve persistir entre lançamentos de aplicação, então eu acho que tem que ser colocado em algum lugar do pacote App (documentos ou recursos?).

Foi útil?

Solução

[ Nota: Minha resposta é bastante completa, porque eu não sei o seu nível de compreensão de pacotes de aplicativos respeito ou a estrutura do pequeno mundo no modo seguro do seu iPhone App - desculpas se eu cobrir as coisas que você já conhece - Eu prefiro escrever um pouco demais do que muito pouco, e para adicionar um pouco do por quando se discute o como ...]

Você tem algumas opções (é claro). Eu estou supondo que você já está familiarizado com .Net, até certo ponto e que a sua pergunta é mais sobre como fazer isso Way do iPhone.

Cada aplicativo para iPhone (e você verá a mesma coisa para aplicativos no OS X) é um "pacote" que não é um executável no sentido tradicional, mas na verdade um dentro hierarquia de pastas dos quais seu aplicativo vidas binários ( juntamente com os recursos, configurações, etc.).

Por causa de aplicativos para iPhone como uber-sandbox é, você não tem acesso às pastas compartilhadas você normalmente ser capaz de usar ao fazer desenvolvimento desktop (tendo, por exemplo, uma documentos comuns pasta que vive sob um usuário do pasta raiz a quais aplicativos têm acesso).

Em vez disso, a sua aplicação tem a sua própria hierarquia de pastas que é como o seu próprio conjunto pessoal das pastas que normalmente seriam compartilhados entre aplicativos.

A maneira mais fácil de ver o que estrutura de pastas aparência de seu aplicativo como o telefone é olhar para a pasta do iPhone simulador de usos para instalações de aplicativos, configurações, blá blá blá. Na minha máquina (não me lembro se isso é configurável, mas é provavelmente o mesmo em seu sistema), você pode obter para a pasta por este caminho:

~/Library/Application Support/iPhone Simulator

Dentro disso, há um Usuário / Applications pasta que contém os aplicativos que você instalou para o simulador. Detalhamento de qualquer uma dessas pastas, e você pode ver a estrutura da pasta seu aplicativo terá acesso ao telefone.

Para armazenar arquivos que você gostaria persistiu entre sessões de aplicativos, documentos de seu aplicativo pasta é o local. Não é sua única escolha para a criação de arquivos, mas é a direito escolha para este trabalho. Além de seus arquivos que estão sendo armazenados corretamente, mantendo-os na pasta Documentos também irá levá-los apoiado pelo iTunes quando as sincronizações de usuário.

Com o MonoTouch, você pode obter documentos de seu aplicativo da pasta com Environment.GetFolderPath(Environment.SpecialFolder.Personal);

Se você gostaria de testá-lo, este é um código extremamente simples que vai escrever um arquivo chamado "out.txt" a pasta Documentos do seu aplicativo. Este código também lê o conteúdo do arquivo para mostrar que foi criado - para posterior verificação, vá para a pasta Aplicações do simulador, classificar as pastas de aplicativos pela data em que foram modificados, detalhar o mais recentemente modificado, e olhar dentro dos seus documentos pasta - você vai encontrar "out.txt" (você não consegue encontrar pasta do seu aplicativo pelo nome porque, quando seu aplicativo é instalado, ele é enchido dentro de uma pasta com um nome como "2B3CA854-FADB-4DDC-9732-0E61B3DD8D8C "- classificando as pastas pela data em que foram modificados irá apontar para o aplicativo mais recentemente modificada, o que, neste caso, é o que quer aplicativo contém o seguinte código):

// 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);

Assim, a única coisa aqui que é realmente específico do iPhone é saber que "Environment.SpecialFolder.Personal" mapeia para pasta Documentos do seu aplicativo. Além disso, é .Net como de costume.

E, novamente, este foi provavelmente um exagero, mas eu queria responder suficientemente bem para todos que o vê - espero que isso ajude:)

Outras dicas

A seguir Como a partir do site guia do Xamarin.iOS tem alguns ponteiros para onde armazenar seus arquivos:

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

Você pode fazer algo parecido com isso em tempo de execução:

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

e que vai criar o arquivo. Para abri-lo para a leitura, use o mesmo Path.Combine() mas com StreamReader .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top