iPhoneシミュレータはどこにデータを保存しますか?


234

アプリのデータを保存するために使用しているSQLite DBがあります。SQLiteDBを調べて、私が抱えている問題をデバッグすることができます。ただし、通常、iPhoneシミュレータはどこにデータを保存しますか?

回答:


291

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

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

以前のSDKが一緒にインストールされている場合、3.1.xシミュレータは引き続き次の場所にデータを保存します。

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

Xcode6およびiOS8の場合

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


6
cd ~/Library/Application\ Support/iPhone\ Simulator/
Robert

174
GUIDが自分のものであるファインダーを検索するのではなく、pisca46の答えを以下に注意po NSHomeDirectory()してください。デバッガーに入力するだけです。Go> Go To Folder(Cmd-Shift-G)に切り取って貼り付けます。
マックワース2014年

シミュレータを起動すると8.2と表示されているのが少し心配ですが、このフォルダを見ると、バージョン番号は7.1しかありません。そのため、間違った場所を探しているのではないかと心配になります。
Bugloaf 2015


4
(上記のマックワースのコメントで推奨されているように)この答えがどれほど単純で、より便利で、エラーが発生しにくく、イライラが少ないかを強調するのは困難です。あなたは、単にに行を追加することができNSLog、あなたにこのAppDelegatedidFinishLaunchingWithOptions:あなたがすることができ、またはpo NSHomeDirectory()デバッガから。どちらの場合も、文字列をコピーし、ファインダーでを使用して開きCmd+Shift+Gます。変更点を知る必要がなく、標準のコマンドで質問しているので、これはうまくいきます。
ベンジョン2017年

93

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

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

ここに画像の説明を入力してください


1
NSString *uniqueIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];デバイス識別子を提供
oabarca

@oabarca取得する識別子は、シミュレータのdeviceIDまたはappFolderとは関係ありません。Xcode 11.2.1とiOS 13.2.2を使用しています
DawnSong

78

それを見つけた:

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

16
検索方法:FinderでCMD + SHIFT + Gを押します
rohan-patel

以下のdsmudgerによる更新された応答を参照してください。これが現時点で正解です。
トムスーゼル2013

74

iOS 8〜/ライブラリ/ Developer / CoreSimulator / Devices / [Device ID] / data / Applications / [appGUID] / Documents /


1
デバイスIDを取得する方法はありますか?
msmq 2014年

2
@msmq tryxcrun instruments -s
Shazron、2014年

11
@msmq現在のシミュレーターをオンにします。ハードウェア->デバイス->デバイスの管理...->「シミュレーター」リストからシミュレーターを選択します。右側は「識別子」です。これはデバイスIDです。
RichX 2014年

ここで[appGUID]を見つける方法は?
ヤンあなた

66

ライオンについて Users/[username]/Libraryは隠されています。

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

「ライブラリ」をクリックすると、以前に非表示にしたライブラリフォルダが表示されます。

以前にアドバイス:

使用する

chflags nohidden /users/[username]/library

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


1
その後、次の場所にあります:〜/ライブラリ/ Application Support / iPhone Simulator / [OS version] / Applications / [appGUID] /
Rafael Moreira

これは通常のユーザーにとって興味深い提案ですが、iOS / OS X開発者はかなり定期的にライブラリにアクセスする必要があるため、二度とそれを非表示にしたくないように思えます。(
それでも

58

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

  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


1
私がこれを以前に知っているだけなら。これは正解だったはずです
Ivan Cantarino

他のすべての答えも正しいと思います。しかし、これは私にとっては簡単なようです:-]
ラルクリシュナ

37

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

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

「ブート済み」はほとんどに置き換えることができます simctl、デバイスのUDIDが期待される場所であれば、コマンドに。

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

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

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

$ xcrun simctl get_app_container booted com.example.app data

素晴らしいもの。device_idとappIdを取得するコマンドを実行する必要はありません。すべてを取得するための1つのステップ
iamhite 2017年

これは、そのようなことを行うための最も「安定した」方法であるため、受け入れられるべきです。
Olha

35

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-hhhhhhhhhhhhiOSアプリを識別する16進文字列はどこにありますか。


16
これはデバッガーでも機能します po NSHomeDirectory()
。– mackworth

30

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

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


4
〜/ Library / Developer / CoreSimulator / Devices / [DeviceID] /にも "device.plist"という名前の.plistファイルがあります。内部を見ると、iphone-6やiphone-5sなどのデバイス名がわかります。deviceIDは非常に混乱しているので、.plistファイル内を確認する必要があります。
EFE 2014年

1
AppIDを取得する方法?
表示名

1
私は「ls -l」を使用してアプリIDを見つけるために騙し、どのアプリのファイルが最近作成されたかを特定しました。他人のためにも働くかもしれません。
Maya Webster

1
または、ファインダーで「作成日」で並べ替えて、アプリをリストの一番上に表示します。
Ammar Mujeeb

30

シミュレータ内のアプリの場所を見つける最も簡単な方法の1つ。ユーザー「NSTemporaryDirectory()」

手順-

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

    po NSTemporaryDirectory()

適切な洞察については、以下の画像を参照してくださいここに画像の説明を入力してください

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

これもお役に立てば幸いです。ハッピーコーディング:)


1
クールなチップですが、なぜpo NSHomeDirectory()でしょうか?
Code Roadie

9

Xcodeが2019+ Catalinaでシミュレータを保存する場所、Xcode 11.0

ランタイム

$ open /Library/Developer/CoreSimulator/Profiles/Runtimes

例:iOS 13.0watchOS 6.0これらは、はるかにスペースを取ります。それぞれ最大5GBまで可能

デバイス

$ open ~/Library/Developer/CoreSimulator/Devices

例:iPhone XriPhone 11 Pro Max。これらは通常、それぞれ<15 mbです。

説明

シミュレーターは、ランタイムとデバイスの間で分割されます。走れば$ xcrun simctl listすると概要が表示されますが、これらのシミュレータの物理的な場所を確認したい場合は、私が示したこれらのディレクトリを調べてください。

サポートしていないランタイムを削除しても安全です。必要に応じて、後でこれらを再インストールできます。


8

単にこれを行う:

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)

ほぼ同じ答えを投稿しようとしていました。この方法には、iOSシミュレータのどのバージョンでも、常に正しいパスを指定できるという利点があります。ちなみに、ログに記録したくない場合は、デバッガでurl変数の値をコピーすることもできます;)
Moose

7

iOS 5の場合:

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


6

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

/ Users / [currentuser] /ライブラリ/ Application Support / iPhone Simulator / 6.1 / Applications /

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

  NSLog(@"path:%@",[[NSBundle mainBundle]bundlePath]);

2
Swiftprint("path: \(NSBundle.mainBundle().bundlePath)")
SwiftArchitect

4

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

2

だれでもまだこの問題が発生している場合は、〜/ライブラリディレクトリを表示するための19の異なるヒントを含む素晴らしい記事があります。Dan Frakesの記事はこちらhttp://www.macworld.com/article/161156/2011/07/view_library_folder_in_lion.html

シミュレータのディレクトリが以下に示されていることを覚えておいてください

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


2

macOSカタリナの場合、私は自分のdbを次の場所に見つけました:

~/Library/Developer/CoreSimulator/Devices/{deviceId}/data/Containers/Data/Application/{applicationId}/Documents/my.db

を取得するにはapplicationId、変更された日付でフォルダーを並べ替えただけですが、それを行うためのより良い方法があると確信しています。


1

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

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

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

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


0

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

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

0

シミュレーターのxCodeでビルドするアプリがある辞書を開くには、次のようにします。

  1. Finderワインダーを開く(スマイルアイコン)
  2. 次に、GO-> Go to Folderをクリックします
  3. タイプ:〜/ライブラリ/ Application Support / iPhone Simulator
  4. ディレクトリは、さまざまなシミュレータのiOSバージョンです。
  5. サブディレクトリはシミュレーターにインストールされたアプリです
  6. Documentsフォルダーは、ユーザーがiCloudにバックアップするコンテンツを生成した場所です

0

私はこのプログラムとは関係ありませんが、これをファインダーで開くことを検討している場合、SimPholdersはそれを信じられないほど簡単にします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.