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)はコンピューター上で異なります。
「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でドキュメントディレクトリに移動します。
ただ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でドキュメントディレクトリに移動します
IOSアプリの開発中にファイルやフォルダーを簡単に見つけることができるSimPholdersという素敵なユーティリティアプリをお勧めします。 SimPholders2と呼ばれる新しいシミュレータで動作する新しいバージョンがあります。 simpholders.com にあります
ここには多くの答えがありますが、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)を見てください。
シミュレータを特定した後、バージョンに応じてフォルダ構造は大きく異なります。
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 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を押します。
シミュレーターは次の場所にあります。
~/Library/Developer/CoreSimulator/
ここでは、それらはUUID名を持つディレクトリとしてリストされています。 「更新日」による並べ替えを使用して、最新のものを見つけます。内部へのナビゲート:
/data/Containers/Data/Application/
ここで、そのデバイス上のすべてのアプリケーションのリストを取得します。これを再度並べ替えて、最新のアプリを取得できます。
注:Xcodeは、アプリを実行するたびにディレクトリ名を変更するため、デスクトップでエイリアス/ショートカットを作成することに依存しないでください。
最も簡単な方法は、アプリを使用することです ここ 、これはすべてを自動的に行います。
~/Library/Developer/CoreSimulator/Devices/
を試してください
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/
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
アプリフォルダーに移動して、何が起こっているかを確認し、迷宮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未満ではアプリ名で表示されます。
Ankurの回答に基づいていますが、私たちSwiftユーザーの場合:
let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
println("Possible sqlite file: \(urls)")
ViewDidLoad内に配置すると、アプリの実行後すぐに印刷されます。
パスを見つける最良の方法は、コードを介して行うことです。
Swiftを使用して、関数application内のAppDelegate.Swiftに以下のコードを貼り付けるだけです。
let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let documentsPath = paths.first as String
println(documentsPath)
Obj-Cコードについては、@ Ankurからの回答をご覧ください
シミュレータのディレクトリは、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
Swift 3.xの場合
if let documentsPath = FileManager.default.urls(for:.documentDirectory, in: .userDomainMask).first?.path {
print("Documents Directory: " + documentsPath)
}
if let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory,
.userDomainMask,
true).first {
debugPrint("documentsPath = \(documentsPath)")
}