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

前端之家收集整理的这篇文章主要介绍了ios – 删除应用程序时是否从设备中删除了Core Data数据库?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我看到Core Data出现错误,似乎表明当我从设备中删除应用程序时,旧数据库没有被删除.以下是我要采取的步骤:

>从我的设备中删除应用程序(点击并按住应用程序,然后点击删除按钮).
>从TestFlight安装应用程序.
>运行应用程序.它启动并运行正常 – 直到它产生导致它崩溃的Core Data查询.崩溃的根本原因是’在实体中找不到密钥路径栏< NSsqlEntity Foo id = 3>‘

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

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

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

解决方法

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

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

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

更新:

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

keypath bar not found in entity <NSsqlEntity Foo id=3>

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

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

因为这是真的:

The problem only exists when installing via TestFlight…

……我不这么认为:

…but I see no reason to blame TestFlight for my problems

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

猜你在找的iOS相关文章