Como faço para acessar instância banco de dados SQLite no iPhone?
Pergunta
Estou desenvolvendo um aplicativo para iPhone que usa o built-in banco de dados SQLite. Estou tentando ver e abrir o banco de dados através da ferramenta de linha de comando sqlite3
para que eu possa executar SQL arbitrárias contra ela.
Quando eu executar o meu aplicativo no simulador, o arquivo .sqlite
ele cria está localizado na ~/Library/Application Support/iPhone Simulator/User/Applications/
.
Como posso ver esse arquivo no iPhone físico?
Solução
No Xcode selecionar Janela-> organizador e expanda o nó ao lado de seu aplicativo na seção aplicativos em seu telefone. Selecione a apontar para baixo seta preta ao lado de dados de aplicativos e salvar o arquivo em qualquer lugar em seu desktop. Seu banco de dados SQLite deve estar em algum lugar.
Quanto à forma como proceder para obter-lo de volta no telefone uma vez que seu feito eu não tenho idéia.
Outras dicas
As instruções para Xcode 6.0.1
- Xcode> Open> YourProject
- Xcode> produto> Executar
- Xcode> Janela> Dispositivos
- (Coluna 1 - select) Dispositivos> YourDeviceName
- (Coluna 2 - selecionar) Instalada Aplicativos> YourAppName
- (Coluna 2 - selecionar) Cog em 'Instalado Apps' lista ??li>
- (Pop-Up - select) Baixar Container ...
- Save a localização
- clique direito em 'YourAppName.xcappdata'
- Selecione 'Mostrar conteúdo do pacote'
- AppData> Documentos> YourDatabase.sqlite
No Xcode 4, você fazer o mesmo que Lounges sugeriu, que vai salvar toda a estrutura do arquivo para o seu aplicativo para o seu destino de eleição. Renomeie o arquivo .xcappdata que é salvo .sqlite para que possa abri-lo clicando duas vezes, então você pode encontrar o arquivo a partir do dispositivo.
Este funciona se você desbloquear seu iPhone .. Eu não sei por que alguém iria ter quaisquer problemas com jailbreaking seu telefone como eu tenho usado para o desenvolvimento por algum tempo e não encontrou problemas, também não é incomum para SQLite para desempenho diferente na dispositivo vs simulador:
- Jail quebrar o seu telefone (não tutoriais em toda a web)
- Defina o seu nível de usuário Cydia para desenvolvedor
- Instale sqlite3 para o telefone: vá para Cydia> Gerir> fontes> Cydia / Telesphoreo> sqlite3
- ssh em seu telefone usando túnel iphone senha ssh root: "alpine"
- Tipo
which sqlite3
para garantir que você tenha instalado -
Procure a localização do seu db .. um ponto de interrupção em seu código deve dizer-lhe onde ele está localizado .. no meu código parece algo como isto
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex: 0]; NSString *pathName = [documentsDirectory stringByAppendingPathComponent:filename]; return pathName;
Observe que se você executar este no simulador .. você vai ter um local como o seguinte:
/Users/admin/Library/Application Support/iPhone Simulator/6.0/Applications/42302574-7722-48C1-BE00-91800443DA7C/Documents/email-524200.edb
No dispositivo que será parecido com este:
/var/mobile/Applications/FB73857F-A822-497D-A4B8-FBFB269A8699/Documents/email-523600.edb
Em seguida, basta digitar sqlite3 %dbname%
e você pode executar instruções SQL diretamente em seu telefone .. sem copiá-lo sobre ou o que quer.
Exatamente da mesma forma que você faz no simulador. Há muito poucas (importantes) diferenças entre o dispositivo e simulador, e acesso a arquivos e carregamento de biblioteca são, na maior parte não faz parte deles.
A sua questão continua a ser um pouco vago. "Veja" em que sentido? Você cria o banco de dados SQLite? Quão? Você já colocou manualmente na área de sistema de arquivos do Simulator? Você talvez perguntando como fazer isso no iPhone?
A maneira mais fácil é PreCreate um banco de dados vazio com a ferramenta de linha de comando sqlite3, tê-lo como um recurso em seu aplicativo, em seguida, copiá-lo na pasta de documentos do seu sandbox do aplicativo. Você pode obter o caminho para os recursos de pasta via pathForResource de NSBundle: OfType:. Método, em seguida, pegue o caminho para a pasta de documentos via NSSearchPathForDirectoriesInDomains () para a pasta NSDocumentsDirectory na NSUserDomainMask, em seguida, copie o arquivo através de métodos de NSFileManager
Caso contrário, você pode usar funções do SQLite para criar um novo banco de dados a partir do zero, fornecendo comandos SQL apropriadas para definir o seu esquema.
A maneira mais fácil de fazê-lo de longe está usando iExplorer para baixar o arquivo de seu aplicativo. e então usar SQLite Professional somente leitura para ler o arquivo. Ainda pensei que não é em tempo real, mas pelo menos é livre. : -)
O Método de download Container é o que eu encontrei para ser o melhor. No entanto, você tem que ter cuidado que algumas vezes, se você tentar e-mail ou anexá-lo de dentro do aplicativo, em seguida, o arquivo que é enviado para fora seria vazia.