情况:
我从sqllite核心数据数据库中获取一个完整的表,并在TableView中显示如下:
NSEntityDescription *entity = [NSEntityDescription entityForName:@"MyTable"
inManagedObjectContext:managedObjectContext];
Run Code Online (Sandbox Code Playgroud)
挑战:
如何获取EntryID并从数据库中获取特定条目(例如,如果我点击一个条目)?我认为这是朝着正确的方向发展的?
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"(id = %@)", myEntryID];
Run Code Online (Sandbox Code Playgroud) 我看到Core Data出现错误,似乎表明当我从设备中删除应用程序时,旧数据库没有被删除.以下是我要采取的步骤:
现在,基于步骤3中所述的错误,似乎Foo上不存在'bar',而我的问题是Core Data模型.但是,相同的代码在模拟器上运行没有问题,甚至在通过Xcode连接时在设备上运行正常.(我已多次验证我在Xcode中使用的代码在模拟器和设备上运行的代码与我在TestFlight构建中的代码相同.)问题仅在通过TestFlight安装时才存在,但我看不到有理由将TestFlight归咎于我的问题.
对于我的团队中的另一个人,按照相同的步骤也会出现同样的问题,因此问题不是我的设备特有的.该应用程序未使用iCloud,MobileMe或任何其他同步功能.
当我从设备上删除应用程序时,是否删除了与核心数据相关的所有内容?Core Data删除或初始化行为是否会根据应用程序在设备上的安装方式而改变?
在尝试在objectID之后获取一些对象时,我遇到了这个奇怪的问题.该错误抱怨没有objectID键路径,但托管对象应该响应.错误不会一直抛出,这让我觉得它可能是一个并发问题,虽然我已经仔细检查过,每个上下文都在自己的线程上执行操作.
这是谓词,虽然它看起来很明智:
[NSPredicate predicateWithFormat:@"objectID == %@", book.objectID]
编辑:关于这个答案.我没有尝试使用对象本身,因为多线程的考虑,我需要使用objectID.