web-dev-qa-db-ja.com

iPhone Simulatorはデータをどこに保存しますか?

アプリデータを保存するために使用しているSQLite DBがあり、その中を見て問題をデバッグすることができますが、通常、iPhone Simulatorはそのデータをどこに保存しますか?

213
Codebeef

受け入れられた回答はSDK 3.2に対して正しい-SDK 4は、そのパス内の/ UserフォルダーをレガシーiPhone OS/iOSバージョンごとの番号に置き換えますシミュレートできるため、パスは次のようになります。

〜/ Library/Application Support/iPhone Simulator/[OS version]/Applications/[appGUID] /

以前のSDKをインストールした場合、3.1.xシミュレーターは引き続きデータを次の場所に保存します:

〜/ライブラリ/ Application Support/iPhone Simulator/User/Applications/[appGUID] /

Xcode6およびiOS8の場合

〜/ Library/Developer/CoreSimulator/Devices/[DeviceID]/data/Containers/Data/Application/[AppID] /

268
dsmudger

それを見つけた:

~/Library/Application Support/iPhone Simulator/User/
78
Codebeef

ターミナルなしでアプリのデータがどこにあるかを見つける別の(より高速な?)方法があります。

  1. シミュレーターでアプリを起動する
  2. アクティビティモニターを開く
  3. [CPU]タブでアプリの名前を見つけます
  4. それをダブルクリックして、「ファイルとポートを開く」を開きます

enter image description here

77
Sergey Lost

iOS 8〜/ Library/Developer/CoreSimulator/Devices/[デバイスID]/data/Applications/[appGUID]/Documents /

72
Wagh

Lionでは、Users/[username]/Libraryは非表示になっています。

単にFinderで表示するには、画面上部の[移動]メニューをクリックし、[alt]キーを押しながら[ライブラリ]を表示します。

[ライブラリ]をクリックすると、以前に隠されていたライブラリフォルダーが表示されます。

以前のアドバイス:

つかいます

chflags nohidden /users/[username]/library

ターミナルでフォルダを表示します。

66
Rafael Moreira

Xcode 5では、次のコードを使用できます。

#import <Foundation/NSFileManager.h>

そして:

NSString *homeDir = NSHomeDirectory();
NSLog(@"%@",homeDir);

結果は次のようになります。

"/Users/<your user name>/Library/Application Support/iPhone Simulator/7.1/Applications/hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh"

hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhhは、iOSアプリを識別する16進文字列です。

31
Pisca46

これまでで最も簡単な方法。

  1. どこかでブレークポイントをキャッチします。

  2. コンソールウィンドウpo NSHomeDirectory()と入力します

結果:

(lldb)po NSHomeDirectory()/Users/usernam/Library/Developer/CoreSimulator/Devices/4734F8C7-B90F-4566-8E89-5060505E387F/data/Containers/Data/Application/395818BB-6D0F-499F -AAFE-068A783D9753

31
Lal Krishna

少なくともiOS 8シミュレーターでは、Xcode 6.0がこの場所をもう一度移動したようです。

〜/ライブラリ/ Developer/CoreSimulator/Devices/[DeviceID]/data/Containers/Data/Application/[AppID]

30
awolf

アプリがシミュレータ内のどこにあるかを見つける最も簡単な方法の1つ。ユーザー "NSTemporaryDirectory()"

手順

  1. アプリ内の任意の場所にブレークポイントを適用し、アプリを実行します。
  2. アプリがブレークポイントで停止したら、Xcodeコンソールで次のコマンドを入力します。

    po NSTemporaryDirectory()

適切な洞察については、以下の画像を参照してください enter image description here

これで、一時フォルダまでの正確なパスができました。戻って、アプリに関連するすべてのフォルダーを表示できます。

これも役立つことを願っています。ハッピーコーディング:)

29
Shubhendu

シミュレーターが実行されている場合、アプリのコンテナーへのパスを取得できます。

xcrun simctl get_app_container booted <app bundle identifier>

出力例:

$ xcrun simctl get_app_container booted com.example.app
/Users/jappleseed/Library/Developer/CoreSimulator/Devices/7FB6CB8F-63CB-4F27-BDAB-884814DA6FE0/data/Containers/Bundle/Application/466AE987-76BC-47CF-A207-266E65E7DE0A/example.app

「booted」は、デバイスUDIDが予想される場所であれば、ほとんどのsimctlコマンドに置き換えることができます。

xcrun simctl listでデバイスのリストを表示し、xcrun simctl helpで特定のコマンドのヘルプを取得できます。

更新:Xcode 8.3の一般的なリクエストでは、「app」、「data」、「groups」、またはapp group identifierを追加することで、必要なコンテナーの種類を指定できるようになりました。

データコンテナを取得するには:

$ xcrun simctl get_app_container booted com.example.app data
29
russbishop

IOS 5の場合:

/ Users/[ユーザー名] /ライブラリ/ Application Support/iPhone Simulator/5.0/Applications/[AppGUID] /

7
Karthi

Xcode 4.6の場合、次のパスに保存されます...

/ Users/[currentuser]/Library/Application Support/iPhone Simulator/6.1/Applications /

プログラムで知るには、次のコードを使用します

  NSLog(@"path:%@",[[NSBundle mainBundle]bundlePath]);
6
Durai Amuthan.H

これを行うだけです:

NSString *docDirPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
NSLog(@"%@", docDirPath);

そして、あなたはこのような何かを得るでしょう:

/ Users/admin/Library/Developer/CoreSimulator/Devices/58B5B431-D2BB-46F1-AFF3-DFC789D189E8/data/Containers/Data/Application/6F3B985F-351E-468F-9CFD-BCBE217A25FB/Documents

そこに行くと、XCodeのバージョンに関係なく、アプリのドキュメントフォルダーが表示されます。 (Finderの「フォルダへ移動...」コマンドを使用して、パス「〜/ library」を指定します)。

文字列パスのSwiftバージョン:

let docDirPath =
NSSearchPathForDirectoriesInDomains(.documentDirectory,
                                    .userDomainMask, true).first
print(docDirPath)

およびフォルダーURL:

let docDirUrl =
    FileManager.default.urls(for: .documentDirectory,
                             in: .userDomainMask).first
print(docDirUrl)
6
LembergSun

iOS 8の場合

Documentsフォルダーを見つけるには、Documentsフォルダーにファイルを書き込むことができます。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"Words.txt"];
NSString *content = @"Apple";
[content writeToFile:fileName atomically:NO encoding:NSStringEncodingConversionAllowLossy error:nil];

たとえば、didFinishLaunchingWithOptionsで。

次に、ターミナルを開いてフォルダーを見つけることができます。

$ find ~/Library -name Words.txt
3
ohho

まだライオンでこの問題が発生している場合は、〜/ Library dirを表示するための19のヒントを持つ素晴らしい記事があります。 Dan Frakesの記事はこちらから http://www.macworld.com/article/161156/2011/07/view_library_folder_in_lion.html

シミュレーターへのディレクトリは以下のとおりです。

〜/ライブラリ/ Application Support/iPhone Simulator/User /

2
Edwin

Xcodeを頻繁に使用しない反応ネイティブのユーザーには、findを使用できます。ターミナルを開き、データベース名で検索します。

$ find ~/Library/Developer -name 'myname.db'

正確な名前がわからない場合は、ワイルドカードを使用できます。

$ find ~/Library/Developer -name 'myname.*'

0
sheepdog

シミュレーターでxCodeでビルドするアプリの辞書を開くには、次の手順を実行します。

  1. finderウィンダー(スマイルアイコン)を開きます
  2. [GO]-> [フォルダに移動]をクリックします
  3. タイプ:〜/ Library/Application Support/iPhone Simulator
  4. ディレクトリは、さまざまなシミュレータのiOSバージョンです
  5. サブディレクトリは、シミュレーターにインストールされたアプリです
  6. ドキュメントフォルダーは、ユーザーがiCloudにバックアップするコンテンツを生成した場所です
0
Mike Zriel

私はこのプログラムとは提携していませんが、Finderでこのいずれかを開く場合は SimPholders を使用すると非常に簡単になります。

0
Jason

以下のコードを使用して試すことができます

NSString *fileName = @"Demo.pdf";
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *pdfFileName = [documentsDirectory stringByAppendingPathComponent:fileName];
    NSLog(@"File path%@",pdfFileName);