我正在尝试使用SQLite浏览器来查看我的Core Data对象。我无法找到核心数据保存其sql文件的位置。我查看了应用程序文档文件夹但没有任何内容。
您知道IOS 10(模拟器)中的核心数据在哪里保存其SQLite文件吗?
答案 0 :(得分:28)
我在XCode 8 Swift 3 OS macOS Sierra上测试了它
IOS 10
在Appdelegate.swif中 t
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
将我们的搜索限制在我们的应用程序的沙箱中。
<强>输出强>
file:///Users/Ashok/Library/Developer/CoreSimulator/Devices/F629F99F-C745-46EB-8A11-01BC9FF1E592/data/Containers/Data/Application/3B373C93-71A2-46E9-8AF7-EF407C39429F/Documents/
点击Go - &gt;转到文件夹 - &gt;粘贴路径 - &gt;按Enter键
然后转到图书馆 - &gt;应用程序支持 - &gt; 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的路径
您可以使用DB Browser for SQLite打开。
答案 1 :(得分:11)
试试这个我还没有在ios 10上检查它,但它在之前的所有版本中都有效
产品&gt;方案&gt;编辑方案&gt;运行&gt;参数强>
在&#34; 在发布时传递的参数&#34;
中添加此参数-com.apple.CoreData.SQLDebug 1
每次应用程序启动时都会打印到数据库的路径 See This argument look like this
答案 2 :(得分:6)
Swift 3.x
在 AppDelegate 文件中找到 didFinishLaunchingWithOptions 并添加此行。
let path = NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true)
print("\(path)")
答案 3 :(得分:2)
设置后:
// available for iOS/iPadOS/Catalyst/macOS, other systems are not tested yet
context.persistentStoreCoordinator?.persistentStores.forEach({
if let url = $0.url {
print(url)
}
})
答案 4 :(得分:1)
对于 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())")
注意:单击“转到”->“转到文件夹”->“在此处粘贴路径”->“输入”
答案 5 :(得分:0)
对于XCODE 8.0(iOS 10): -
.sqlite持久性存储的路径是:
/ Users/Ashish/Library/Developer/CoreSimulator/Devices/"YourDeviceId"/data/Containers/Data/Application/"Application Id"/Library/Application Support/"FileNamePassedInPersistentContainer.sqlite"
答案 6 :(得分:0)
由于您的应用的Core Data文件的位置可以更改,因此您可以使用SQLite浏览器(如SQLiteFlow)浏览Core Data文件的内容。原因很简单,它可以处理SQLite文件位置的变化。来自SQLiteFlow的文档:
处理数据库文件名或目录更改。这使得SQLiteFlow可以在iOS模拟器中与您的SQLite数据库协同工作。
答案 7 :(得分:0)
对于Swift v5.x
,这将起作用。
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")")
}
一旦打印了此路径,就可以使用DB Browser for SQL Lite并查看所有表。