web-dev-qa-db-ja.com

iPhoneでSQLiteデータベースインスタンスにアクセスするにはどうすればよいですか?

組み込みのSQLiteデータベースを使用するiPhoneアプリを開発しています。 sqlite3コマンドラインツールを使用してデータベースを表示して開こうとしているため、任意のSQLを実行できます。

シミュレータでアプリを実行すると、アプリが作成する.sqliteファイルは~/Library/Application Support/iPhone Simulator/User/Applications/にあります。

物理的なiPhoneでそのファイルを表示するにはどうすればよいですか?

36

Xcodeでwindow-> organizerを選択し、電話のアプリケーションセクションでアプリケーションの横のノードを展開します。アプリケーションデータの横にある黒い下向きの矢印を選択し、デスクトップ上の任意の場所にファイルを保存します。あなたのsqliteデータベースはどこかにあるはずです。

あなたが終わったら電話でそれを取り戻す方法については私には手掛かりがありません。

43
Lounges

Xcode 6.0.1の手順

  1. Xcode>開く> YourProject
  2. Xcode>製品>実行
  3. Xcode>ウィンドウ>デバイス
  4. (列1-選択)デバイス> YourDeviceName
  5. (列2-選択)インストール済みアプリ> YourAppName
  6. (列2-選択)「インストール済みアプリ」リストの下のCog
  7. (ポップアップ-選択)コンテナのダウンロード...
  8. 場所に保存
  9. 「YourAppName.xcappdata」を右クリックします
  10. 「パッケージの内容を表示」を選択します
  11. AppData>ドキュメント> YourDatabase.sqlite

enter image description here

73
Tr0yJ

XCode 4では、推奨されるラウンジと同じことを行います。これにより、アプリのファイル構造全体が目的の場所に保存されます。 .sqliteに保存されている.xcappdataファイルの名前を変更して、ダブルクリックで開くことができるようにします。そうすると、デバイスからファイルを見つけることができます。

2
Echilon

これはあなたのiPhoneを脱獄した場合に機能します..私がかなり長い間開発に使用していて問題がなかったので、誰もがなぜ彼らの電話を脱獄することに問題があるのか​​分かりません、またそれはsqliteでは珍しいことではありません 別の方法で実行 デバイスとシミュレーターの比較:

  1. 刑務所はあなたの電話を壊します(ウェブ全体にチュートリアルがあります)
  2. Cydiaのユーザーレベルを developer に設定します
  3. Sqlite3を電話にインストールします:cydia>管理>ソース> cydia/telesphoreo> sqlite3に移動します
  4. iphone tunnel root ssh password: "Alpine"を使用して電話にsshします。
  5. タイプwhich sqlite3確実にインストールしてください
  6. 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ステートメントを実行することができます..何もコピーすることなく。

2
abbood

あなたの質問は少し曖昧なままです。 「見る」とはどういう意味ですか? SQLiteデータベースを作成しますか?どうやって?シミュレータのファイルシステム領域に手動で配置しましたか?あなたはおそらくiPhoneでそれを行う方法を尋ねていますか?

最も簡単な方法は、sqlite3コマンドラインツールを使用して空のデータベースを事前に作成し、それをアプリケーションのリソースとして使用して、それをアプリケーションサンドボックスのドキュメントフォルダーにコピーすることです。 NSBundleのpathForResource:ofType:メソッドを介してリソースフォルダーへのパスを取得し、NSUserDomainMaskのNSDocumentsDirectoryフォルダーのNSSearchPathForDirectoriesInDomains()を介してDocumentsフォルダーへのパスを取得し、NSFileManagerのメソッドを介してファイルをコピーします。

それ以外の場合は、SQLiteの関数を使用して、スキーマを定義する適切なSQLコマンドを提供することにより、新しいデータベースを最初から作成できます。

1
millenomi

シミュレータで行うのとまったく同じ方法で。デバイスとシミュレーターの間の(重要な)違いはほとんどなく、ファイルアクセスとライブラリーのロードは大部分がそれらの一部ではありません。

1
millenomi

コンテナーのダウンロード方法は、私が最も優れている方法です。ただし、メールで送信したり、アプリ内から添付しようとしたりすると、送信されるファイルが空になる場合があることに注意する必要があります。

0
user3349763

はるかに簡単な方法は、iExplorerを使用してアプリからファイルをダウンロードすることです。次に SQLite Professional読み取り専用 を使用してファイルを読み取ります。リアルタイムではないと思っていても、少なくとも無料です。 :-)

0
Clement Ho