【问题标题】:View contents of Core Data查看核心数据的内容
【发布时间】:2013-08-17 15:37:33
【问题描述】:

我希望能够从命令行查看我的 iPhone 模拟器应用程序中包含的 Core Data 的内容。

我已经尝试“cd'ing”到~/Library/Application Support/iPhone Simulator/7.0/Applications,然后使用find . -name MyAppName 来查找这些目录中的哪个目录包含我的应用程序:

29EB3FF9-4691-474D-8B05-AB168899D528 4C25697B-04D9-4B48-BE5E-D1E9B2E03381 A1DF7916-AE39-4367-BFD2-22A8BAA2AFD2 BDB577A8-0BCF-4E58-896B-D4E704F261D0 CC3CC638-E39D-4AE7-8580-4E8BBD375DC4 D11D7C57-5578-4531-85BB-71AE6DD68B2F

然后我导航到该文件夹​​内的“Documents”文件夹,但我看到的唯一“sqlite”文件是CoreDataTabBarTutorial.sqlite CoreDataTabBarTutorial.sqlite-shm CoreDataTabBarTutorial.sqlite-wal。 (编辑:我实际上已将我的persistentStoreCoordinator 的URL 命名为CoreDataTabBarTutorial.sqlite)。

我确定我的对象已插入“核心数据”,但似乎它们在 Interface Builder 启动之间不会持续存在。我正在尝试调试它。

【问题讨论】:

  • 那么你实际上的意思是你想查看SQLLite-back CoreData 存储的内容?我也对 感到非常困惑,但似乎它们在 Interface Builder 的启动之间并没有持续存在' 这真的是你的意思吗?
  • 当您创建持久存储时,请检查您用于初始化它的类型和名称。
  • 谢谢,我将persistentStoreCoordinator 的URL 设置为CoreDataTabBarTutorial.sqlite。

标签: ios core-data


【解决方案1】:

为了知道你的 sqlite 文件的路径,请按照以下步骤操作

1) 打开项目的 AppDelegate。

2) 必须存在声明为的 var(仅当您在创建项目时选中使用 CoreData 时):

lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator = {

3) 找到类似于

的行

让网址= self.applicationDocumentsDirectory.URLByAppendingPathComponent("SingleViewCoreData.sqlite")

4) 将此网址打印为

print("persistentStoreCoordinator url : (url)")

5) 运行您的应用程序在控制台中找到此 url 6)复制那个url,打开终端,输入cd然后粘贴这个url 网址就像

(file:///Users/prnjls/Library/Developer/CoreSimulator/Devices/A2B99983-4B71-4708-A515-7A87463ECF0C/data/Containers/Data/Application/F70EF393-FBF7-4598-B28B-9DAACBFE46F8/Documents /SingleViewCoreData.sqlite)

7) 下载并安装一个免费的应用程序来查看sqlite数据here

8) 在 Liya 上打开 点击文件 -> 新建 -> 在数据库类型中选择 sqlite -> 点击它附近的图标 -> 使用您复制的路径导航到该 sqlite 文件。

9) 您可以找到您保存的所有实体,点击任何实体名称,然后单击 Run SQL Command 。 就是这样 。 希望它无论如何都会对某人有所帮助。

【讨论】:

    【解决方案2】:

    核心数据通过 sqlite 保存在设备上。

    您可以使用sqlite3 CoreDataTabBarTutorial.sqlite 从命令行查看您的数据库。您将需要使用各种 sqlite3 命令和 SQL 来查看任何值。 See Docs

    .table will list the tables
    select * from ZYOURTABLENAME; (do not forget semi-colon) will display the rows.
    

    有一个Mac app called Base 是一个用于查看 sqlite 数据库的 GUI 工具。

    【讨论】:

      【解决方案3】:

      我知道的最简单的方法是使用CoreDataUtility。

      只需按照以下步骤操作:

      1. 下载最新的二进制文件https://github.com/yepher/CoreDataUtility/wiki
      2. 解压并运行应用程序
      3. 选择菜单->文件->新建项目
      4. 选择“iOS 模拟器”标签
      5. 选择“模拟器应用”按钮
      6. 在下拉列表中选择您的应用并选择确定
      7. 选择“文件”按钮并向上导航两个目录
      8. 选择 Documents 并找到您的“持久性”文件(它将被命名为 CoreDataTabBarTutorial.sqlite 或您在代码中初始化的任何名称)
      9. 确保选择“SQL”
      10. 点击“打开”
      11. 点击文件->保存项目,下次双击项目文件即可。

      【讨论】:

        【解决方案4】:

        我知道这是一个非常古老的问题,但我最近编写了一个小型简单库,可让您在调试应用程序时查看 Core Data Store 的内容。它在您正在处理的应用程序中为您提供了一个自定义弹出查看器,而不必下载 SQL 查看器Check it out here

        添加到你的 Podfile

        pod 'RWCoreDataViewer', :git => 'https://github.com/richmondwatkins/RWCoreDataViewer'
        

        使您的托管对象成为 RWCoreDataInspector 协议的成员。 (这里没有什么要实现的,只需将它包含在你的类声明中)

        import Foundation
        import CoreData
        import RWCoreDataViewer
        
        class MyEntity: NSManagedObject, RWCoreDataInspector {
        
        }
        

        要显示您的数据,只需粘贴:

        RWCoreDataViewer.initialize(self.managedObjectContext)
        

        就是这样。每当您想显示数据时,只需添加初始化程序,您将获得一个包含所有实体及其记录的自定义视图

        【讨论】:

          【解决方案5】:

          创建一个 Apple Automator bash 脚本并将其复制到下面,然后下载 DB Browser for SQLite 以打开核心数据

          cd ~/Library/Developer/CoreSimulator/Devices/
          cd `ls -t -d */ | head -n 1`data/Containers/Data/Application 
          cd `ls -t | head -n 1`"/Library/Application Support/<APPNAME>"
          open -a DB\ Browser\ for\ SQLite ./<AppName>.sqlite
          

          【讨论】:

            【解决方案6】:

            尝试显示隐藏文件: defaults write com.apple.Finder AppleShowAllFiles 1 &amp;&amp; killall Finder 并再次查找文件。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-05-01
              • 2013-10-05
              • 2019-07-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多