web-dev-qa-db-ja.com

iOS 8 Beta Simulatorのドキュメントディレクトリパス

IOS 7では、iOSシミュレーターのドキュメントディレクトリは次の場所にあります。

/Users/Sabo/Library/Application Support/iPhone Simulator/

ただし、iOS 8 Beta Simulatorでは、上記のディレクトリにiOS 8に対応するディレクトリが見つかりません。

IOS 8シミュレータのドキュメントディレクトリパスはどこにありますか?

enter image description here

83
Fire Fist

私のコンピューターでは、パスは次のとおりです。

~/Library/Developer/CoreSimulator/Devices/1A8DF360-B0A6-4815-95F3-68A6AB0BCC78/data/Container/Data/Application/

注:おそらく、これらの長いID(つまりUDID)はコンピューター上で異なります。

149
holex

「AppDelegate」のどこかにあるコードの下のNSLogを使用して、プロジェクトを実行し、パスに従います。これは、「〜/ Library/Developer/CoreSimulator/Devices /」内をランダムに検索するのではなく、ドキュメントに簡単にアクセスできます。

Objective-C

NSLog(@"%@",[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]);

スイフト
Swift 1.2を使用している場合は、#if#endifブロックのためにシミュレーターを使用する場合、開発時にのみ出力される以下のコードを使用します。

#if Arch(i386) || Arch(x86_64)
  let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! NSString
  NSLog("Document Path: %@", documentsPath)
#endif

「/ Users/ankur/Library/Developer/CoreSimulator/Devices/7BA821 ...」からパスをコピーして、「Finder」と「Go to Folder」に移動するか、 command + shift + g パスを貼り付けて、Macでドキュメントディレクトリに移動します。

71
Ankur

ただwriteAppDelegate-> didFinishLaunchingWithOptionsの以下のコード
目的C

#if TARGET_IPHONE_SIMULATOR 
// where are you? 
NSLog(@"Documents Directory: %@", [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]); 
#endif 


Swift 2.X

if let documentsPath = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first?.path {
    print("Documents Directory: " + documentsPath)   
}

Swift 3.X

#if Arch(i386) || Arch(x86_64)
    if let documentsPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path {
        print("Documents Directory: \(documentsPath)")
    }
#endif

Swift 4.2

#if targetEnvironment(simulator)
    if let documentsPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path {
        print("Documents Directory: \(documentsPath)")
    }
#endif

出力
/Users/mitul_marsonia/Library/Developer/CoreSimulator/Devices/E701C1E9-FCED-4428-A36F-17B32D32918A/data/Containers/Data/Application/25174F64-7130-4B91-BC41-AC74257CCC6E/Documents

パスをコピー "/ Users/mitul_marsonia/Library/Developer/CoreSimulator/Devices/E701C1E9-FCED-4428-A36F-17B32D32918A ..." "Finder"に移動してから" 「フォルダに移動」またはコマンド+ Shift + Gでパスを貼り付けてください、Macでドキュメントディレクトリに移動します

35
Mitul Marsoniya

IOSアプリの開発中にファイルやフォルダーを簡単に見つけることができるSimPholdersという素敵なユーティリティアプリをお勧めします。 SimPholders2と呼ばれる新しいシミュレータで動作する新しいバージョンがあります。 simpholders.com にあります

16
JDibble

ここには多くの答えがありますが、iOS 8.3シミュレーターのフォルダー構造がどのように変化したかを理解するものではなく、アプリのデータ(ドキュメントフォルダー)をすばやく見つける方法を提供していません。

IOS 8の場合、アプリのデータストレージフォルダーはアプリの実行可能ファイルから分離されているのに対し、iOS 7以下は同じフォルダー構造を持っているため、唯一の違いはすべてのシミュレーター(異なるタイプとバージョン)が1つの大きなフォルダーになりました。

したがって、iOS 8,7,6シミュレーターへのパスは次のとおりです。

~/Library/Developer/CoreSimulator/Devices

すべてのシミュレーターは、シミュレーターのリセットごとに変化する固有の識別子で名前が付けられたフォルダーに含まれています。

Xcode > Window > Devicesにアクセスすると、デバイスとシミュレーターごとにIdentifierを見つけることができます(識別子の最初の3文字または4文字で十分です)。

アプリをインストールしたものを見つけるには、Run scheme > devices(画面2)を見てください。

screen 1

screen 2

シミュレータを特定した後、バージョンに応じてフォルダ構造は大きく異なります。

iOS 8の場合アプリの実行可能ファイルとデータフォルダーは異なるフォルダーにあります。

実行可能~/Library/Developer/CoreSimulator/Devices/[simID]/data/Containers/Bundle/Application/[appID]

データフォルダー~/Library/Developer/CoreSimulator/Devices/[simID]/data/Containers/Data/Application/[appID]/

ドキュメントフォルダ~/Library/Developer/CoreSimulator/Devices/[simID]/data/Containers/Data/Application/[appID]/Documents

オンiOS 7以下のフォルダー構造は以前と同じですが、すべてのシミュレーターが同じフォルダーにあることに注意してください(上記を参照)。

14
Razvan

アプリがCoreDataを使用する場合、気の利いたトリックは、ターミナルを使用してsqliteファイルの名前を検索することです。

find ~ -name my_app_db_name.sqlite

結果には、アプリを実行したシミュレータへの完全なファイルパスが一覧表示されます。

AppleがiOSシミュレータのファイルメニューに「Finderでドキュメントフォルダを公開」のようなボタンを追加することを本当に望んでいます。

12
DiscDev

パス〜/ Library/Developer/CoreSimulator/Devices /を調べる必要があるのは正しいことです。

しかし、私が見ている問題は、アプリを実行するたびにパスが変化し続けることです。パスには、アプリケーション文字列の後に別の長いIDのセットが含まれており、アプリを実行するたびに変化し続けます。これは基本的に、次回実行するときにアプリにキャッシュデータがないことを意味します。

11
Deepak G M

IOS 9.2およびXcode 7.2では、次のスクリプトは、最後に使用したシミュレーターで最後にインストールしたアプリケーションのDocumentsフォルダーを開きます。

cd ~/Library/Developer/CoreSimulator/Devices/
cd `ls -t | head -n 1`/data/Containers/Data/Application 
cd `ls -t | head -n 1`/Documents
open .

簡単な実行可能なスクリプトを作成するには、「Run Shell Script」を使用してAutomatorアプリケーションに配置します。

Run Shell Script inside Automator Application

7
Bouke

Xcode 6.0でCoreSimulatorを採用すると、データディレクトリはバージョンごとではなくデバイスごとになります。データディレクトリは〜/ Library/Developer/CoreSimulator/Devices // dataで、「xcrun simctl list」から決定できます

Xcode 5.x以前にロールバックする必要がない場合は、〜/ Library/Application Support/iPhone Simulatorおよび〜/ Library/Logs/iOS Simulatorを安全に削除できることに注意してください。

更新:Xcode 7.2•Swift 2.1.1

if let documentsPath = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first?.path {
    print(documentsPath)   // "var/folder/.../documents\n" copy the full path
}

Finderに移動してcommand-shift-gを押し(またはメニューバーの下の[移動]> [フォルダーに移動...])、そのフルパス「var/folder /.../ documents」をそこに貼り付けてgoを押します。

5
Leo Dabus

シミュレーターは次の場所にあります。

~/Library/Developer/CoreSimulator/

ここでは、それらはUUID名を持つディレクトリとしてリストされています。 「更新日」による並べ替えを使用して、最新のものを見つけます。内部へのナビゲート:

/data/Containers/Data/Application/

ここで、そのデバイス上のすべてのアプリケーションのリストを取得します。これを再度並べ替えて、最新のアプリを取得できます。

注:Xcodeは、アプリを実行するたびにディレクトリ名を変更するため、デスクトップでエイリアス/ショートカットを作成することに依存しないでください。

最も簡単な方法は、アプリを使用することです ここ 、これはすべてを自動的に行います。

4
NSRover

~/Library/Developer/CoreSimulator/Devices/を試してください

4
Droppy

IOS 8シミュレーターのドキュメントディレクトリはどこにありますか

IPhoneシミュレーターがXcode 6で変更されたこと、そしてもちろん、シミュレートされたアプリのドキュメントディレクトリへのパスが変更されたことにお気づきかもしれません。時にはそれを見てみる必要があるかもしれません。

そのパスを見つけることは、かつてほど簡単ではありません。つまり、ライブラリ/アプリケーションサポート/ iPhone Simulator/7.1/Applications /の後にアプリを表す不可解な数字が続きます。

Xcode 6およびiOS 8の時点では、ライブラリ/開発者/ CoreSimulator /デバイス/暗号化番号/データ/コンテナ/データ/アプリケーション/暗号化番号にあります。

http://pinkstone.co.uk/where-is-the-documents-directory-for-the-ios-8-simulator/

3
jbchitaliya

appdelegateで、次のコードを追加してDocument and Cache Dirを確認します。

#if TARGET_IPHONE_SIMULATOR
    NSLog(@"Documents Directory: %@", [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]);
    NSArray* cachePathArray = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString* cachePath = [cachePathArray lastObject];
    NSLog(@"Cache Directory: %@", cachePath);
#endif

ログに:

ドキュメントディレクトリ:/Users/xxx/Library/Developer/CoreSimulator/Devices/F90BBF76-C3F8-4040-9C1E-448FAE38FA5E/data/Containers/Data/Application/3F3F6E12-EDD4-4C46-BFC3-58EB64D4BCCB /ドキュメント/

キャッシュディレクトリ:/Users/xxx/Library/Developer/CoreSimulator/Devices/F90BBF76-C3F8-4040-9C1E-448FAE38FA5E/data/Containers/Data/Application/3F3F6E12-EDD4-4C46-BFC3-58EB64D4BCCB /ライブラリ/ Caches

3
ikanimo

アプリフォルダーに移動して、何が起こっているかを確認し、迷宮UUDIDを通過する必要がない場合は、次のようにしました。 https://github.com/kallewoof/plget

それを使用して、これを作成しました: https://Gist.github.com/kallewoof/de4899aabde564f62687

基本的に、アプリのフォルダーに移動したいときは次のようにします。

$ cd ~/iosapps
$ ./app.sh
$ ls -l
total 152
lrwxr-xr-x  1 me  staff    72 Nov 14 17:15 My App Beta-iOS-7-1_iPad-Retina.iapp -> iOS-7-1_iPad-Retina.dr/Applications/BD660795-9131-4A5A-9A5D-074459F6A4BF
lrwxr-xr-x  1 me  staff    72 Nov 14 17:15 Other App Beta-iOS-7-1_iPad-Retina.iapp -> iOS-7-1_iPad-Retina.dr/Applications/A74C9F8B-37E0-4D89-80F9-48A15599D404
lrwxr-xr-x  1 me  staff    72 Nov 14 17:15 My App-iOS-7-1_iPad-Retina.iapp -> iOS-7-1_iPad-Retina.dr/Applications/07BA5718-CF3B-42C7-B501-762E02F9756E
lrwxr-xr-x  1 me  staff    72 Nov 14 17:15 Other App-iOS-7-1_iPad-Retina.iapp -> iOS-7-1_iPad-Retina.dr/Applications/5A4642A4-B598-429F-ADC9-BB15D5CEE9B0
-rwxr-xr-x  1 me  staff  3282 Nov 14 17:04 app.sh
lrwxr-xr-x  1 me  staff   158 Nov 14 17:15 com.mycompany.app1-iOS-8-0_iPad-Retina.iapp -> /Users/me/Library/Developer/CoreSimulator/Devices/129FE671-F8D2-446D-9B69-DE56F1AC80B9/data/Containers/Data/Application/69F7E3EF-B450-4840-826D-3830E79C247A
lrwxr-xr-x  1 me  staff   158 Nov 14 17:15 com.mycompany.app1-iOS-8-1_iPad-Retina.iapp -> /Users/me/Library/Developer/CoreSimulator/Devices/414E8875-8875-4088-B17A-200202219A34/data/Containers/Data/Application/976D1E91-DA9E-4DA0-800D-52D1AE527AC6
lrwxr-xr-x  1 me  staff   158 Nov 14 17:15 com.mycompany.app1beta-iOS-8-0_iPad-Retina.iapp -> /Users/me/Library/Developer/CoreSimulator/Devices/129FE671-F8D2-446D-9B69-DE56F1AC80B9/data/Containers/Data/Application/473F8259-EE11-4417-B04E-6FBA7BF2ED05
lrwxr-xr-x  1 me  staff   158 Nov 14 17:15 com.mycompany.app1beta-iOS-8-1_iPad-Retina.iapp -> /Users/me/Library/Developer/CoreSimulator/Devices/414E8875-8875-4088-B17A-200202219A34/data/Containers/Data/Application/CB21C38E-B978-4B8F-99D1-EAC7F10BD894
lrwxr-xr-x  1 me  staff   158 Nov 14 17:15 com.mycompany.otherapp-iOS-8-1_iPad-Retina.iapp -> /Users/me/Library/Developer/CoreSimulator/Devices/414E8875-8875-4088-B17A-200202219A34/data/Containers/Data/Application/DE3FF8F1-303D-41FA-AD8D-43B22DDADCDE
lrwxr-xr-x  1 me  staff    51 Nov 14 17:15 iOS-7-1_iPad-Retina.dr -> simulator/4DC11775-F2B5-4447-98EB-FC5C1DB562AD/data
lrwxr-xr-x  1 me  staff    51 Nov 14 17:15 iOS-8-0_iPad-2.dr -> simulator/6FC02AE7-27B4-4DBF-92F1-CCFEBDCAC5EE/data
lrwxr-xr-x  1 me  staff    51 Nov 14 17:15 iOS-8-0_iPad-Retina.dr -> simulator/129FE671-F8D2-446D-9B69-DE56F1AC80B9/data
lrwxr-xr-x  1 me  staff    51 Nov 14 17:15 iOS-8-1_iPad-Retina.dr -> simulator/414E8875-8875-4088-B17A-200202219A34/data
lrwxr-xr-x  1 me  staff   158 Nov 14 17:15 org.cocoapods.demo.pajdeg-iOS-8-0_iPad-Retina.iapp -> /Users/me/Library/Developer/CoreSimulator/Devices/129FE671-F8D2-446D-9B69-DE56F1AC80B9/data/Containers/Data/Application/C3069623-D55D-462C-82E0-E896C942F7DE
lrwxr-xr-x  1 me  staff    51 Nov 14 17:15 simulator -> /Users/me/Library/Developer/CoreSimulator/Devices

./app.sh部分はリンクを同期します。 6.0の時点で、アプリはXcodeで実行するたびにUUIDを変更するため、基本的に常に必要です。また、残念なことに、アプリは8.xではバンドルIDで、8未満ではアプリ名で表示されます。

3
Kalle

Ankurの回答に基づいていますが、私たちSwiftユーザーの場合:

let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
println("Possible sqlite file: \(urls)")

ViewDidLoad内に配置すると、アプリの実行後すぐに印刷されます。

3
kakubei

パスを見つける最良の方法は、コードを介して行うことです。

Swiftを使用して、関数application内のAppDelegate.Swiftに以下のコードを貼り付けるだけです。

let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let documentsPath = paths.first as String
println(documentsPath)

Obj-Cコードについては、@ Ankurからの回答をご覧ください

2
rsc

シミュレータのディレクトリは、Xcode 6ベータ版に移動されました...

 ~/Library/Developer/CoreSimulator

ディレクトリをアプリのドキュメントフォルダーに移動するのは、もう少し面倒です。たとえば、

~/Library/Developer/CoreSimulator/Devices/4D2D127A-7103-41B2-872B-2DB891B978A2/data/Containers/Data/Application/0323215C-2B91-47F7-BE81-EB24B4DA7339/Documents/MyApp.sqlite
2
hmdeep

Swift 3.xの場合

if let documentsPath = FileManager.default.urls(for:.documentDirectory, in: .userDomainMask).first?.path {
        print("Documents Directory: " + documentsPath)
    }
1
Boris

iOS 11

if let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory,
                                                           .userDomainMask,
                                                           true).first {
    debugPrint("documentsPath = \(documentsPath)")
}
1
SwiftArchitect