Como usar arquivos para salvar dados para ios

Em aplicações iOS, ficheiros são utilizados como os meios de armazenamento e de restaurar o estado de um jogo activo. Caso você tenha feito qualquer tipo de programação em qualquer linguagem (C, C ++, Java, C #, o nome dele), você já usou arquivos para ler dados de e gravar dados. Objective-C permite que você trabalhe com arquivos como wellFiles em iOS são organizados em diretórios.

Cada aplicativo recebe o seu próprio diretório onde o aplicativo reside e seus dados podem ser armazenados. Este diretório é conhecido como o aplicativo de caixa de areia.

Diagrama de um aplicativo`s directory, also know as sandbox.

Video: Transfência de arquivos via WiFi - Android / iOS

Um aplicativo está proibido de acessar ou criar arquivos fora da sua caixa de areia. Quando um aplicativo precisa trabalhar com contatos ou música do usuário, o sistema precisa (e faz) permitir que as operações relacionadas a arquivos necessários para ler ou modificar esses armazenamentos de dados, que estão fora sandbox do aplicativo.

Este diretório sandbox é organizado em um conjunto de subdiretórios. A Apple especifica como cada um desses subdiretórios deve ser usado, como segue:

  • o lt;nome do aplicativogt; diretório .app é onde o aplicativo do executável e todos os arquivos em sua reside pacote (como o X e imagens S para Tic-Tac-Toe).

    Video: Como salvar/recuperar as Fotos/Notas/Contatos do iPhone/iPod/iPad automaticamente nas nuvens(iCloud)

  • O diretório Documentos contém dados que a sua aplicação não pode recriar, como documentos gerados pelo usuário ou conteúdo. Este é o diretório onde o aplicativo Tic-Tac-Toe salva jogos, mantém seus arquivos SQLite, e assim por diante. iTunes faz o backup este diretório, então quando você conectar o dispositivo ao Mac, os dados aqui serão salvos.

  • O diretório Caixa de entrada dentro do diretório Documents tem um significado especial. Este diretório armazena arquivos que de outros Aplicativos pedir a sua aplicação para a abrir. Por exemplo, o programa de correio coloca anexos de e-mail associado à sua aplicação neste diretório. Seu aplicativo pode ler e apagar arquivos nesse diretório, mas não pode criar novos arquivos ou gravar arquivos existentes.

  • O diretório Biblioteca é usado para arquivos que não são arquivos de dados do usuário, mas precisam de ser apoiados. Com a exceção de um subdiretório chamado caches (que é especificamente para os dados do aplicativo quer temporariamente para poupar para um acesso mais rápido), os arquivos aqui são apoiados por iTunes.

  • O subdiretório tmp salva os dados temporários que não precisam persistem entre as execuções de aplicativos. Seu aplicativo deve remover arquivos deste diretório quando eles não são mais necessários. O sistema também pode limpar arquivos remanescentes a partir deste diretório quando o seu aplicativo não está em execução ou espaço em disco é baixa. O conteúdo deste diretório são não backup.

    Video: Como Transferir TUDO do IPHONE para Samsung Galaxy S7



Agora, olhe para um exemplo rápido em Tic-Tac-Toe que mostra como escrever e ler arquivos. Neste exemplo, usar um arquivo para salvar e restaurar o estado de um jogo.

Video: Como salvar/recuperar as Fotos/Notas/Contatos do iPhone/iPod/iPad automaticamente - Video refeito

Quando um usuário toca Salvar jogo, o estado atual do jogo é salvo em um arquivo chamado SavedGames.data no diretório de documentos na caixa de areia do aplicativo (o caminho para esse arquivo foi criado usando # define como o TTTGAMESESSIONSAVEDFILEPATH constante no TTTGameSessionViewController arquivo. h).

Pré-visualização de todos os arquivos em um aplicativo.

Se o usuário sair sem terminar o jogo, ela pode voltar para a tela sessão do jogo e voltar para o jogo salvo, selecionando Restaurar jogo.

Agora, para alguns códigos. O código a seguir mostra SaveGame:

 - (IBAction) SaveGame: (ID) remetente {NSDictionary * savedGameDictionary = [activeGame ToDictionary] -NSError * erro-NSData * jsonData = [NSJSONSerialization dataWithJSONObject: savedGameDictionaryoptions: NSJSONWritingPrettyPrintederror:&erro] -NSString * savedGameString = [[NSString alloc] initWithdata: jsonDataencoding: NSUTF8StringEncoding] -NSString * savedGamesFilePath = [NSHomeDirectory () stringByAppendingPathComponent: @TTTGAMESESSIONSAVEDFILEPATH] - [savedGameString WriteToFile: savedGamesFilePathatomically: YESencoding: NSUTF8StringEncodingerror: NULL] -}

Escrevendo para um arquivo é fácil. Você acabou de construir o caminho do arquivo usando o stringByAppendingPathComponent método em um objeto que representa o diretório home do aplicativo (que você começa chamando a função NSHomeDirectory). Então [savedGameString WriteToFile: savedGamesFilePath ...] faz a escrita real.

Leitura de um arquivo é simples, também. Aqui está o código para restoreGame:

 - (IBAction) restoreGame: (ID) remetente {NSString * savedGamesFilePath = [NSHomeDirectory () stringByAppendingPathComponent: @TTTGAMESESSIONSAVEDFILEPATH] -NSString * savedGameString = [NSString stringWithContentsOfFile: savedGamesFilePathencoding: NSUTF8StringEncodingerror: NULL] -NSError * restoreError = nil-NSMutableDictionary * savedDictionary = [ NSJSONSerialization JSONObjectWithdata: [savedGameStringdataUsingEncoding: NSUTF8StringEncoding] opções: NSJSONReadingMutableContainerserror:&restoreError] -activeGame = [[TTTGame alloc] initFromDictionary: savedDictionary] -TTTGameGrid * gameGrid = [activeGame getGameGrid] -se [boardView disableInput] - [boardView setGrid ([activeGame isActive]!): gameGrid] - [Gameview redesenhar] -}

Você já viu como um caminho para o arquivo é criado usando a função NSHomeDirectory para obter o objeto de diretório para casa, e, em seguida, usando o método stringByAppendingPathComponent deste objeto para criar a string. Em seguida, você ler o arquivo inteiro em uma string usando [NSString stringWithContentsOfFile: savedGamesFilePath ...], e então você está livre para processar a cadeia, conforme necessário.


Publicações relacionadas