iPhoneでSQLiteデータベースインスタンスにアクセスするにはどうすればよいですか?
質問
組み込みのSQLiteデータベースを使用するiPhoneアプリを開発しています。 sqlite3
コマンドラインツールを使用してデータベースを表示して開き、任意のSQLを実行できるようにしようとしています。
シミュレータでアプリを実行すると、作成される .sqlite
ファイルは〜/ Library / Application Support / iPhone Simulator / User / Applications /
にあります。
物理的なiPhoneでそのファイルを表示するにはどうすればよいですか?
解決
Xcodeでwindow-> organizerを選択し、電話機のアプリケーションセクションでアプリケーションの隣のノードを展開します。アプリケーションデータの横にある黒い下向き矢印を選択し、デスクトップ上の任意の場所にファイルを保存します。 sqliteデータベースはどこかにあるはずです。
完了したら、電話でそれを取り戻す方法についてはわかりません。
他のヒント
Xcode 6.0.1の手順
- Xcode>開く> YourProject
- Xcode>製品>実行
- Xcode>ウィンドウ>デバイス
- (列1-選択)デバイス> YourDeviceName
- (列2-選択)インストール済みアプリ> YourAppName
- (列2-選択)「インストール済みアプリ」リストの下の歯車
- (ポップアップ-選択)コンテナのダウンロード...
- 場所に保存
- 「YourAppName.xcappdata」を右クリック
- 「パッケージの内容を表示」を選択
- AppData>ドキュメント> YourDatabase.sqlite
XCode 4では、推奨されるラウンジと同じ操作を行います。これにより、アプリのファイル構造全体が目的の場所に保存されます。 .sqliteに保存されている.xcappdataファイルの名前を変更して、ダブルクリックして開くことができるようにします。その後、デバイスからファイルを見つけることができます。
これは、iPhoneをジェイルブレイクする場合に機能します。かなり長い間開発に使用していて、問題が見つからなかったので、誰もがジェイルブレイクで問題が発生する理由がわかりません。 sqliteが異なるパフォーマンスを行うことはまれですデバイスとシミュレーター:
- 刑務所で電話を破る(ウェブ中にチュートリアルがあります)
- cydiaユーザーレベルを developerに設定します
- 携帯電話にsqlite3をインストールします:cydiaに移動>管理>ソース> cydia / telesphoreo> sqlite3
- iPhoneトンネルを使用して電話にSSH接続します。ルートsshパスワード:" alpine&quot ;
-
which sqlite3
と入力して、インストール済みであることを確認します -
dbの場所を参照します。コード内のブレークポイントは、その場所を示します。私のコードでは、このように見えます
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex: 0]; NSString *pathName = [documentsDirectory stringByAppendingPathComponent:filename]; return pathName;
シミュレータでこれを実行すると、次のような場所が得られることに注意してください。
/ Users / admin / Library / Application Support / iPhone Simulator / 6.0 / Applications / 42302574-7722-48C1-BE00-91800443DA7C / Documents / email-524200.edb
デバイス上では次のようになります。
/var/mobile/Applications/FB73857F-A822-497D-A4B8-FBFB269A8699/Documents/email-523600.edb
その後、 sqlite3%dbname%
と入力するだけで、携帯電話で直接sqlステートメントを実行できます。
シミュレータで行うのとまったく同じ方法で。デバイスとシミュレーターの間には(重要な)違いはほとんどなく、ファイルアクセスとライブラリの読み込みは、それらの大部分ではなく大部分です。
あなたの質問は少しあいまいです。 " See"どのような意味で? SQLiteデータベースを作成しますか?どうやって?シミュレータのファイルシステム領域に手動で配置しましたか?あなたはおそらくiPhoneでそれを行う方法を尋ねていますか?
最も簡単な方法は、sqlite3コマンドラインツールで空のデータベースを事前に作成し、それをアプリケーションのリソースとして使用し、それをアプリケーションサンドボックスのドキュメントフォルダーにコピーすることです。 NSBundleのpathForResource:ofType:メソッドを使用してリソースフォルダーへのパスを取得し、NSUserDomainMaskのNSDocumentsDirectoryフォルダーのNSSearchPathForDirectoriesInDomains()を介してDocumentsフォルダーへのパスを取得し、NSFileManagerのメソッドを介してファイルをコピーします。
それ以外の場合、SQLiteの関数を使用して、適切なSQLコマンドを提供してそのスキーマを定義することにより、新しいデータベースを最初から作成できます。
これを行う最も簡単な方法は、iExplorerを使用してアプリからファイルをダウンロードすることです。次に、 SQLite Professional読み取り専用ファイルを読み取ります。 リアルタイムではないと思っていても、少なくとも無料です。 :-)
「コンテナのダウンロード」メソッドは、私が最良であることがわかりました。ただし、メールを送信したり、アプリ内から添付しようとすると、送信されるファイルが空になる場合があることに注意する必要があります。