我希望能够从命令行查看我的iPhone模拟器应用程序中包含的Core Data
的内容。
我尝试“cd”“进入~/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
的{{1}}命名为URL
。)
我确信我的对象会插入“Core Data”,但看起来它们在Interface Builder的启动之间不会持续存在。我正在尝试调试它。
答案 0 :(得分:6)
核心数据使用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工具。
答案 1 :(得分:6)
要了解sqlite文件的路径,请按照以下步骤操作
1)打开项目的AppDelegate。
2)必须存在带声明的var(仅当您在创建项目时选中了使用CoreData):
lazy var persistentStoreCoordinator:NSPersistentStoreCoordinator = {
3)找到类似于
的一行让url = self.applicationDocumentsDirectory.URLByAppendingPathComponent(" SingleViewCoreData.sqlite&#34)
4)将此网址打印为
print(" persistentStoreCoordinator url:(url)")
5)运行您的应用在控制台中找到此网址 6)复制该URL,打开终端,键入cd然后粘贴此URL 你好像
(文件:///用户/ prnjls /库/开发商/ CoreSimulator /设备/ A2B99983-4B71-4708-A515-7A87463ECF0C /数据/容器/数据/应用/ F70EF393-FBF7-4598-B28B-9DAACBFE46F8 /文件/SingleViewCoreData.sqlite)
7)下载并安装免费应用程序以查看sqlite数据here
8)打开Liya点击文件 - >新 - >在数据库类型中选择sqlite - >点击它附近的图标 - >使用您复制的路径导航到该sqlite文件。
9)您可以找到已保存的所有实体,点击任何实体名称,然后单击运行SQL命令。 就是这样。 希望无论如何它会帮助别人。
答案 2 :(得分:3)
我所知道的最简单方法是使用CoreDataUtility。
请按以下步骤操作:
答案 3 :(得分:0)
我知道这是一个非常古老的问题,但我最近编写了一个小型简单库,可让您在调试应用程序时查看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)
就是这样。每当您想要显示数据时,只需添加初始化程序,您将获得包含所有实体及其记录的自定义视图
答案 4 :(得分:0)
创建一个Apple Automator bash脚本并将其复制到下面,然后下载用于SQLite的数据库浏览器以打开核心数据
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim number As Integer
Dim numbers As New List(Of Integer)
For Each strLine As String In TxtArr.Lines
'Dim nums() As String = strLine.Split(","c)
Dim nums() As String = strLine.Split("-")
For Each num As String In nums
If Integer.TryParse(num.Trim, number) Then
numbers.Add(number)
End If
Next
Next
numbers.Sort()
'When you are building strings use a StringBuilder to avoide creating and throwing away
'a bunch of strings. (happens every time you alter a string
Dim TextBox1sb As New StringBuilder
Dim TextBox2sb As New StringBuilder
For Each intNumber As Integer In numbers
'The Mod operator divides the first number by the second number
'and returns the remainder
If intNumber Mod 2 = 0 Then '(number / 2) = Int(number / 2) Then
'Number is even
TextBox1sb.Append(intNumber.ToString & ",")
TextBox1.Text = TextBox1.Text + intNumber.ToString
Else
TextBox2sb.Append(intNumber.ToString & ",")
TextBox2.Text = TextBox2.Text + intNumber.ToString
End If
Next
'Update the UI only once, don't force a redraw on each iteration of the loop
'TextBox1.Text = Strings.Left(TextBox1sb.ToString, TextBox1sb.Length - 1)
TextBox1.Text = Mid(TextBox1sb.ToString, 1, Len(TextBox1sb.ToString) - 1)
TextBox2.Text = Mid(TextBox2sb.ToString, 1, Len(TextBox2sb.ToString) - 1)
答案 5 :(得分:-5)
尝试显示隐藏文件:
defaults write com.apple.Finder AppleShowAllFiles 1 && killall Finder
然后再找到文件。