>从我的设备中删除应用程序(点击并按住应用程序,然后点击删除按钮).
>从TestFlight安装应用程序.
>运行应用程序.它启动并运行正常 – 直到它产生导致它崩溃的Core Data查询.崩溃的根本原因是’在实体中找不到密钥路径栏< NSsqlEntity Foo id = 3>‘
现在,基于步骤3中所述的错误,似乎Foo上不存在’bar’,而我的问题是Core Data模型.但是,相同的代码在模拟器上运行没有问题,甚至在通过Xcode连接时在设备上运行正常. (我已多次验证我在Xcode中使用的代码在模拟器和设备上运行的代码与我在TestFlight构建中的代码相同.)问题仅在通过TestFlight安装时才存在,但我看不到有理由将TestFlight归咎于我的问题.
对于我的团队中的另一个人,按照相同的步骤也会出现同样的问题,因此问题不是我的设备特有的.该应用程序未使用iCloud,MobileMe或任何其他同步功能.
当我从设备上删除应用程序时,是否删除了与Core Data相关的所有内容? Core Data删除或初始化行为是否会根据应用程序在设备上的安装方式而改变?
解决方法
但是,在设备上的发布版本中,删除应用程序将删除应用程序沙箱中的所有文件,即应用程序可以写入的任何位置.
在越狱设备上不会出现这种情况.
更新:
阅读更新的父级后,我会注意到这个错误:
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正在触发问题.