コアデータオブジェクトを表示するために、SQLiteブラウザを使用しようとしています。コアデータがsqlファイルを保存する場所を見つけることができません。アプリドキュメントフォルダを調べましたが、何もありません。
IOS 10(simulator)のコアデータがSQLiteファイルを保存する場所を知っていますか?
XCode 8でテストしましたSwift 3 OS macOS Sierra
IOS 10
Appdelegate.swiftで
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let urls = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
print(urls[urls.count-1] as URL)
return true
}
1。定数.documentDirectory
は、ドキュメントディレクトリを探していると言います
2。定数.userDomainMask
検索をアプリケーションのサンドボックスに制限します。
output
file:///Users/Ashok/Library/Developer/CoreSimulator/Devices/F629F99F-C745-46EB-8A11-01BC9FF1E592/data/Containers/Data/Application/3B373C93-71A2-46E9-8AF7-EF407C39429F/Documents/
[Go]をクリック-> [Go to Folder]-> [Paste Path]-> [Enter Enter]
次に、ライブラリに移動->アプリケーションサポート-> filename.sqlite
編集済み
[〜#〜]または[〜#〜]
端末を開き、find ~ -name 'HitTest.sqlite'
を押してEnterキーを押します。
Ashoks-MacBook-Pro:Desktop Ashok$ find ~ -name 'HitTest.sqlite'
/Users/Ashok/Library/Developer/CoreSimulator/Devices/F629F99F-C745-46EB-8A11-01BC9FF1E592/data/Containers/Data/Application/3B373C93-71A2-46E9-8AF7-EF407C39429F/Documents/HitTest.sqlite
上記の出力から、sqlite dbのパスを明確に見ることができます
SQLite用DBブラウザー を使用して開くことができます。
ちょうどこれを試してくださいIOS 10ではチェックしていませんが、以前のすべてのバージョンで動作しています
製品>スキーム>スキームの編集>実行>引数
「起動時に渡される引数」にこの引数を追加します
-com.Apple.CoreData.SQLDebug 1
アプリケーションが起動するたびに、データベースへのパスを出力します この引数は次のようになります
Swift 3.x
AppDelegateファイルでdidFinishLaunchingWithOptionsを見つけ、この行を追加します。
let path = NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true)
print("\(path)")
アプリのコアデータファイルの場所は変更可能であるため、見つけた後は SQLiteFlow のようなSQLiteブラウザーを使用してコアデータファイルのコンテンツを閲覧できます。その理由は簡単で、SQLiteファイルの場所の変更を処理できます。 SQLiteFlowのドキュメントから:
データベースファイル名またはディレクトリの変更を処理します。これにより、SQLiteFlowはiOSシミュレーターのSQLiteデータベースと使いやすくなります。
Swift 5の場合
func getCoreDataDBPath() {
let path = FileManager
.default
.urls(for: .applicationSupportDirectory, in: .userDomainMask)
.last?
.absoluteString
.replacingOccurrences(of: "file://", with: "")
.removingPercentEncoding
print("Core Data DB Path :: \(path ?? "Not found")")
}
これは、sqliteファイル(dbname.sqlite)までの詳細なパスを提供します
print("CoreData path :: \(self.getCoreDataDBPath())")
注: [移動]-> [フォルダに移動]-> [パスをここに貼り付け]-> Enterをクリックします。
XCODE 8.0(iOS 10)の場合:-
.sqlite永続ストアへのパスは次のとおりです。
/ Users/Ashish/Library/Developer/CoreSimulator/Devices/"YourDeviceId"/data/Containers/Data/Application/"Application Id"/Library/Application Support/"FileNamePassedInPersistentContainer.sqlite"