Alguém pode me explicar qual é o diretório de documentos em um aplicativo iOS e quando usá-lo?
Aqui está o que eu acredito atualmente:
Para mim, parece ser uma pasta central onde o usuário pode armazenar todos os arquivos necessários para o aplicativo.
Este seria um local diferente daquele em que o Core Data armazena seus dados?
Parece que cada aplicativo recebe seu próprio diretório de documentos.
Sou livre para criar um subdiretório do diretório de documentos, como diretório / imagens de documentos ou diretório / vídeos de documentos?
ios
nsdocumentdirectory
user798719
fonte
fonte
Respostas:
Seu aplicativo apenas (em um dispositivo sem jailbreak) é executado em um ambiente "protegido por sandbox". Isso significa que ele pode acessar apenas arquivos e diretórios dentro de seu próprio conteúdo. Por exemplo Documentos e Biblioteca .
Consulte o Guia de programação de aplicativos do iOS .
Para acessar o diretório Documents da sua caixa de proteção de aplicativos, você pode usar o seguinte:
iOS 8 e mais recente, este é o método recomendado
se você precisar oferecer suporte ao iOS 7 ou anterior
Esse diretório de documentos permite armazenar arquivos e subdiretórios que seu aplicativo cria ou pode precisar.
Para acessar arquivos no diretório Biblioteca da caixa de proteção de seus aplicativos, use (no lugar do
paths
acima):fonte
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
sempre lhe dará o diretório correto!Isso mudou no iOS 8. Veja a seguinte nota técnica: https://developer.apple.com/library/ios/technotes/tn2406/_index.html
A maneira sancionada pela Apple (no link acima) é a seguinte:
fonte
Não encontrei o código no documento sugerido pela resposta aceita, mas encontrei o equivalente atualizado aqui:
Guia de programação do sistema de arquivos :: Acessando arquivos e diretórios »
Desencoraja o uso de NSSearchPathForDirectoriesInDomain:
Aqui estão algumas outras constantes de diretório úteis para brincar. Sem dúvida, nem todos esses são suportados no iOS. Além disso, você pode usar a função NSHomeDirectory () que:
De NSPathUtilities.h
E, finalmente, alguns métodos de conveniência em uma categoria NSURL http://club15cc.com/code/ios/easy-ios-file-directory-paths-with-this-handy-nsurl-category
fonte
Swift 3 e 4 como var global:
Como extensão FileManager:
fonte
documentDirectoryURL
ou simplesmentedocumentDirectory
e confiar no tipo. Eu gosto da idéia de definir o escopo estaticamente paraFileManager
uma propriedade estática em uma extensão.Além da
Documents
pasta, o iOS também permite salvar arquivos nas pastastemp
eLibrary
.Para obter mais informações sobre qual usar, consulte este link na documentação:
fonte
Pode ser mais fácil adicionar uma extensão ao FileManager para esse tipo de chamada incômoda, para limpeza, se nada mais. Algo como:
fonte
Você pode acessar o diretório de documentos usando este código, que é basicamente usado para armazenar arquivos no formato plist:
fonte
Aqui está uma pequena função útil, que facilita a utilização / criação de pastas do iOS.
Você passa o nome de uma subpasta, retornará o caminho completo para você e verifique se o diretório existe.
(Pessoalmente, uso essa função estática na minha classe AppDelete, mas talvez esse não seja o lugar mais inteligente para colocá-la.)
Aqui está como você o chamaria, para obter o "caminho completo" de um subdiretório MySavedImages:
E aqui está a função completa:
Usando essa pequena função, é fácil criar um diretório no diretório Documents do seu aplicativo (se ele ainda não existir) e gravar um arquivo nele.
Aqui está como eu criaria o diretório e gravaria nele o conteúdo de um dos meus arquivos de imagem:
Espero que isto ajude !
fonte
Como outros mencionados, seu aplicativo é executado em um ambiente em área restrita e você pode usar o diretório de documentos para armazenar imagens ou outros recursos que seu aplicativo possa usar, por exemplo. download de arquivos offline-d como o usuário preferir - Noções básicas do sistema de arquivos - Documentação da Apple - Qual diretório usar, para armazenar arquivos específicos do aplicativo
Atualizado para o swift 5, você pode usar uma dessas funções, conforme o requisito -
Uso:
fonte