ios – 如何使NSManagedObject没有错?

ios – 如何使NSManagedObject没有错?,第1张

概述我正在调试另一个开发人员编写的一个大项目.该项目使用CoreData,我很新.我发生了一次崩溃,因为某些NSManagedObject是一个错误(我对什么是错误了解不多),我想将对象转换为“not fault”,看看是否有帮助.阅读文档让我觉得让对象没有错就等于火故障(我对“火”的理解也很差),所以我决定通过调用它上面的任何方法来解雇它,这个方法是hasChanges因为它不在不引发故障的方法列表 我正在调试另一个开发人员编写的一个大项目.该项目使用CoreData,我很新.我发生了一次崩溃,因为某些NSManagedobject是一个错误(我对什么是错误了解不多),我想将对象转换为“not fault”,看看是否有帮助.阅读文档让我觉得让对象没有错就等于火故障(我对“火”的理解也很差),所以我决定通过调用它上面的任何方法来解雇它,这个方法是hasChanges因为它不在不引发故障的方法列表中.然而,即使在调用此方法之后,该对象仍然是错误的.谁能给我一个如何将NSManagedobject转换为“非故障”状态的例子?解决方法 您在评论中提到的例外情况是:

Terminating app due to uncaught exception 'NSObjectInaccessibleException',reason: 'CoreData Could not fulfill a fault for '0x1f0627a0 <x-coredata://E40418A0-A8E5-4340-865F-A9DA2E0095DD/CoreObject/p288>''

“无法完成故障”消息表明这不仅仅是解决故障的问题.事实上,没有特殊的步骤可以触发故障 – 您只需访问属性,如有必要,故障就会自动触发.

此错误告诉您的是,您正在执行导致错误触发的 *** 作,但Core Data无法找到您正在使用的实例的任何记录.在某些情况下可能会发生这种情况,例如:

>获取一个对象,并将其保留为错误(即不访问任何属性)
>从Core Data中删除它,但保留对该对象的引用(可能在实例变量中)
>保存更改
>尝试访问在步骤1中获取的对象的属性.

此时Core Data通常会使用该对象来查找属性值.但是你已经删除了它,因此属性数据消失了. Core Data会抛出此异常.

还有一些其他方案可以触发这一点 – 在托管对象上下文中调用reset,同时保留先前获取的对象,或者删除持久存储(以便数据仍然存在于存储文件中,但文件不再被加载).通常,这意味着Core Data正在尝试查找不再有效的对象上的数据.

你需要做什么:

>找出导致这个问题的对象.设置异常断点,以便调试器在崩溃发生时加载,可能是个好主意.>摆脱那个对象.防止故障发生可能会阻止这种特定的崩溃,但只要您仍然拥有此对象,它就像是您应用中的地雷.一旦触摸它,它就会爆炸并崩溃应用程序.>弄清楚为什么你有无效的托管对象潜伏在内存中.也许你应该早点摆脱它们?也许你不小心删除了一些你不想删除的内容?出于某种原因,当托管对象不再有效时,它们会将其保留在周围.这是导致麻烦的核心问题.

总结

以上是内存溢出为你收集整理的ios – 如何使NSManagedObject没有错?全部内容,希望文章能够帮你解决ios – 如何使NSManagedObject没有错?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1018471.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存