删除应用程序时是否从设备中删除了Core Data数据库?

Jos*_*own 6 core-data ios

我看到Core Data出现错误,似乎表明当我从设备中删除应用程序时,旧数据库没有被删除.以下是我要采取的步骤:

  1. 从我的设备中删除应用程序(点击并按住应用程序,然后点击删除按钮).
  2. TestFlight安装应用程序.
  3. 运行应用程序.它启动并运行正常 - 直到它产生导致它崩溃的Core Data查询.崩溃的根本原因是'在实体中找不到keypath bar <NSSQLEntity Foo id = 3>'

现在,基于步骤3中所述的错误,似乎Foo上不存在'bar',而我的问题是Core Data模型.但是,相同的代码在模拟器上运行没有问题,甚至在通过Xcode连接时在设备上运行正常.(我已多次验证我在Xcode中使用的代码在模拟器和设备上运行的代码与我在TestFlight构建中的代码相同.)问题仅在通过TestFlight安装时才存在,但我看不到有理由将TestFlight归咎于我的问题.

对于我的团队中的另一个人,按照相同的步骤也会出现同样的问题,因此问题不是我的设备特有的.该应用程序未使用iCloud,MobileMe或任何其他同步功能.

当我从设备上删除应用程序时,是否删除了与核心数据相关的所有内容?Core Data删除或初始化行为是否会根据应用程序在设备上的安装方式而改变?

Tec*_*Zen 6

在模拟器上或在设备上进行开发构建的情况下,不能删除所有文件.这与Xcode有关,不希望每次在开发过程中构建时都必须从头开始重新安装整个应用程序包.它不是贬低一切,而只是改变了改变的东西.这可能会导致问题,例如,当从构建目标中删除文件时,似乎无法从模拟器中可靠地删除.xcdatamodel文件.

但是,在设备上的发布版本中,删除应用程序将删除应用程序沙箱中的所有文件,即应用程序可以编写的所有文件.

在越狱设备上不会出现这种情况.

更新:

阅读更新的父级后,我会注意到这个错误:

keypath bar not found in entity <NSSQLEntity Foo id=3>
Run Code Online (Sandbox Code Playgroud)

当您尝试访问实体不支持的密钥路径时生成.... 此错误几乎总是发生在获取请求的谓词内.一个常见原因是尝试获取瞬态属性.(对商店运行提取,并且商店中不存在定义的瞬态属性.)

但是,我已经看到这种错误与我上面描述的开发安装问题一起出现.

因为这是真的:

只有通过TestFlight安装时才会出现此问题...

......我不这么认为:

......但我认为没有理由责怪TestFlight的问题

......真的很合理.如果一切正常,除非您使用TestFlight,那么似乎可以合理地断定TestFlight正在触发问题.


Ste*_*her 5

删除应用程序会删除其沙箱。其中包括核心数据文件。

冒着提供明显建议的风险,您是否使用相同的构建配置进行构建?您的 TestFlight 构建可能使用 Release 或 AdHoc 配置,您的设备构建可能使用 Debug。