gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 03:39:33 25 4
gpt4 key购买 nike

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

  1. 从我的设备中删除该应用(点击并按住该应用,然后点击删除按钮)。
  2. TestFlight 安装应用程序.
  3. 运行应用程序。它启动并运行良好 - 直到它进行核心数据查询导致它崩溃。崩溃的根本原因是“在实体 中找不到键路径栏”

现在,根据第 3 步中所述的错误,“bar”似乎在 Foo 上不存在,而我的问题出在 Core Data 模型上。然而,相同的代码在模拟器上运行没有问题,甚至在通过 Xcode 连接时在设备上运行良好。 (我已经多次验证我在 Xcode 中使用的在模拟器和设备上运行的代码与我的 TestFlight 构建中的代码相同。)问题仅在通过 TestFlight 安装时存在,但我看不到有理由将我的问题归咎于 TestFlight。

按照相同的步骤,我团队中的另一个人也遇到了同样的问题,因此该问题并非特定于我的设备。该应用未使用 iCloud、MobileMe 或任何其他同步功能。

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

最佳答案

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

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

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

更新:

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

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

... 当您尝试访问实体不支持的键路径时生成。这个错误几乎总是发生在获取请求的谓词中。一个常见的原因是试图获取 transient 属性。 (针对存储运行的提取和定义的 transient 属性在存储中不存在。)

但是,我已经看到这种错误伴随着我上面描述的开发安装问题而出现。

因为这是真的:

The problem only exists when installing via TestFlight...

...我不这么认为:

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

……真是有道理。如果一切正常,除非您使用 TestFlight,那么可以合理地得出结论是 TestFlight 触发了问题。

关于ios - 删除应用程序时是否从设备中删除了 Core Data 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6620045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com