iOS 7では、iOSシミュレーターのドキュメントディレクトリは次の場所にあります。
/Users/Sabo/Library/Application Support/iPhone Simulator/
ただし、iOS 8 Beta Simulatorでは、上記のディレクトリにiOS 8に対応するディレクトリが見つかりません。
iOS 8シミュレーターのドキュメントディレクトリパスはどこにありますか?
iOS 7では、iOSシミュレーターのドキュメントディレクトリは次の場所にあります。
/Users/Sabo/Library/Application Support/iPhone Simulator/
ただし、iOS 8 Beta Simulatorでは、上記のディレクトリにiOS 8に対応するディレクトリが見つかりません。
iOS 8シミュレーターのドキュメントディレクトリパスはどこにありますか?
回答:
私のコンピュータでは、パスは次のとおりです。
~/Library/Developer/CoreSimulator/Devices/1A8DF360-B0A6-4815-95F3-68A6AB0BCC78/data/Container/Data/Application/
注:おそらくそれらの長いID(つまりUDID)はコンピュータによって異なります。
NSLog
以下の「AppDelegate」のどこかにコードを記述し、プロジェクトを実行してパスに従ってください。これは、「〜/ライブラリ/ Developer / CoreSimulator / Devices /」内をランダムに検索するのではなく、ドキュメントにアクセスするのが簡単になります。
Objective-C
NSLog(@"%@",[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]);
Swift
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にアクセスさせます。ドキュメントディレクトリ:)
AppDelegateで以下のコードを書くだけです -> didFinishLaunchingWithOptions
Objective 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 」に移動してから「Go to Folder」またはコマンド+ shift + gとパスを貼り付け、Macがドキュメントディレクトリに移動するようにします
iOSアプリの開発中にファイルやフォルダーを簡単に見つけられるSimPholdersと呼ばれる素晴らしいユーティリティアプリをお勧めします。SimPholders2と呼ばれる新しいシミュレータで動作する新しいバージョンがあります。それはで見つけることができますsimpholders.com
ここに多くの答えがあるという事実にもかかわらず、どれも、iOS 8.3シミュレーターのフォルダー構造がどのように変更されたかを理解できず、アプリのデータ(ドキュメントフォルダー)をすばやく見つける方法を提供していません。
iOS 8はアプリのデータストレージフォルダーがアプリの実行可能ファイルから分離されているため、iOS 7以下は同じフォルダー構造を持っています。唯一の違いは、すべてのシミュレーター(異なるタイプとバージョン)が現在、1つの大きなフォルダにあります。
したがって、iOS 8,7,6シミュレータへのパスは次のとおりです。
~/Library/Developer/CoreSimulator/Devices
すべてのシミュレータは、シミュレータをリセットするたびに変化する一意の識別子で名前が付けられたフォルダに含まれています。
に移動するとIdentifier
、各デバイスとシミュレータのを見つけることができますXcode > Window > Devices
(識別子の最初の3または4文字は覚えるだけで十分です)。
アプリをインストールしたアプリを見つけるには、Run scheme > devices
(画面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およびフォルダ構造の下には、前にのみ(上記参照)、今、すべてのシミュレータは同じフォルダ内にあることを覚えておくと同じです。
アプリがCoreDataを使用している場合、気の利いたトリックは、ターミナルを使用してsqliteファイルの名前を検索することです。
find ~ -name my_app_db_name.sqlite
結果には、アプリを実行したシミュレータへの完全なファイルパスが一覧表示されます。
AppleがiOSシミュレータのファイルメニューに「Finderのドキュメントフォルダを表示する」のようなボタンを追加することを本当に望みます。
パス〜/ Library / Developer / CoreSimulator / Devices /を調べる必要があることは正しいです。
しかし、私が目にしている問題は、アプリを実行するたびにパスが変化し続けることです。パスには、アプリケーション文字列の後に別の長いIDのセットが含まれており、アプリを実行するたびに変化し続けます。これは基本的に、次回の実行時にアプリにキャッシュデータがないことを意味します。
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 11.5•Swift 5.2
if let documentsPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path {
print(documentsPath) // "var/folder/.../documents\n" copy the full path
}
Finderに移動し、command-shift-g(またはメニューバーの下の[移動]> [フォルダに移動...])を押して、その完全パス「var / folder /.../ documents」をそこに貼り付け、[移動]を押します。
CoreDataを使用してフルパスを保存したときも、同じ問題に直面しました。完全パスを取得すると、アプリが再起動するたびにドキュメントフォルダーのUUIDが異なるため、nullを返します。以下は私の解決策です:
[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
iOS 8シミュレーターのドキュメントディレクトリはどこにありますか
iPhoneシミュレーターがXcode 6で変更されたことに気づいたかもしれません。Xcode6ではもちろん、シミュレートされたアプリのドキュメントディレクトリへのパスが変更されています。時々それを見る必要があるかもしれません。
そのパスを見つけるのは、かつてほど簡単ではありません。つまり、ライブラリ/アプリケーションサポート/ iPhoneシミュレータ/7.1/アプリケーション/の後に、アプリを表す暗号の番号が続きます。
Xcode 6およびiOS 8以降では、次の場所にあります:ライブラリ/ Developer / CoreSimulator / Devices / cryptic number / data / Containers / Data / Application / cryptic number
http://pinkstone.co.uk/where-is-the-documents-directory-for-the-ios-8-simulator/
Appdelegateで、次のコードを挿入してドキュメントとキャッシュディレクトリを確認します。
#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 / Documents /
キャッシュディレクトリ: / Users / xxx / Library / Developer / CoreSimulator / Devices / F90BBF76-C3F8-4040-9C1E-448FAE38FA5E / data / Containers / Data / Application / 3F3F6E12-EDD4-4C46-BFC3-58EB64D4BCCB / Library / Caches
アプリフォルダーに移動して何が起こっているのかを確認し、迷路の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の場合はアプリ名です。
シミュレータは以下にあります:
~/Library/Developer/CoreSimulator/
ここでは、UUID名のディレクトリとしてリストされています。「更新日」によるソートを使用して、最新のものを見つけます。内部ナビゲート:
/data/Containers/Data/Application/
ここでは、そのデバイス上のすべてのアプリケーションのリストを取得します。これを再度ソートして、最新のアプリを取得できます。
注: Xcodeはアプリを実行するたびにディレクトリ名を変更するため、デスクトップでエイリアス/ショートカットを作成することに依存しないでください。
最も簡単な方法は、ここでアプリを使用することです。
if let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory,
.userDomainMask,
true).first {
debugPrint("documentsPath = \(documentsPath)")
}