核心数据文件的位置iOS 10

时间:2016-09-27 10:56:16

标签: ios swift core-data ios-simulator ios10

我正在尝试使用SQLite浏览器来查看我的Core Data对象。我无法找到核心数据保存其sql文件的位置。我查看了应用程序文档文件夹但没有任何内容。

您知道IOS 10(模拟器)中的核心数据在哪里保存其SQLite文件吗?

8 个答案:

答案 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键

enter image description here

然后转到图书馆 - &gt;应用程序支持 - &gt; filename.sqlite

enter image description here

<强> 被修改

打开您的终端并输入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并查看所有表。