gpt4 book ai didi

ios - 核心数据二进制数据允许外部存储崩溃

转载 作者:行者123 更新时间:2023-11-29 11:31:16 26 4
gpt4 key购买 nike

我在 iOS 12.0.1 上出现以下日志时发生崩溃:

ImageIO: CFDataGetBytes: data: 0x28539b2f0 size: 154262 offset: 8 count: 8 dst: 0x16dbf86f0
External data reference cant find underlying file.
Fatal Exception: NSInternalInconsistencyException
0 CoreFoundation 0x23c2d7ef8 __exceptionPreprocess
1 libobjc.A.dylib 0x23b4a5a40 objc_exception_throw
2 CoreData 0x23efd5fc8 -[_PFExternalReferenceData getBytes:range:]
3 ImageIO 0x23e6c7178 IIOImageRead::getCFDataBytesAtOffset(void*, unsigned long, unsigned long)
4 ImageIO 0x23e6c6c38 IIOImageRead::getBytesAtOffset(void*, unsigned long, unsigned long)
5 ImageIO 0x23e711aa4 IIO_Reader_PNG::getImageCount(IIOImageReadSession*, IIODictionary*, int*, unsigned int*)
6 ImageIO 0x23e54c5d8 IIO_Reader::callGetImageCount(CGImageReadSession*, IIODictionary*, int*)
7 ImageIO 0x23e532194 IIOImageSource::updatedCount()
8 ImageIO 0x23e5367b4 CGImageSourceGetCount
9 UIKitCore 0x26960c1a4 _UIImageRefFromData
10 UIKitCore 0x268d4e15c -[UIImage(UIImagePrivate) _initWithData:preserveScale:cache:]
11 UIKitCore 0x268d48b7c +[UIImage imageWithData:]
12 MyApp 0x102239570 __48-[InfoPreviewController bindToPatient:]_block_invoke_2 (InfoPreviewController.m:83)
13 ReactiveObjC 0x1031f8004 -[RACSubscriber sendNext:] (RACSubscriber.m:72)

enter image description here

core data 好像有图像,但是当它试图检索它时,它失败了。

在这种情况下如何验证数据完整性?我想以用户友好的方式处理此故障,而不是让应用程序崩溃。

最佳答案

这是由 iOS 12.0.x 中核心数据外部存储中的一个已知错误引起的,如此处所述:https://stackoverflow.com/a/52628198/2347353 .没有解决方法,但该错误似乎已在 iOS 12.1 中修复。

不过,为了回答您的问题,通过一些黑客扑克,您可以获得应该存储数据的文件名,并检查它是否存在。如果文件丢失,那么您就知道发生了损坏,因此您可以避免读取该属性,从而防止应用程序崩溃。

这些都没有记录,但文件似乎存储在应用的文档文件夹中的 _EXTERNAL_DATA 隐藏目录中,文件名可以从保存到数据的值中计算出店铺。

这个答案显示了如何在 Objective-C 中执行此操作,并且我从中获得了很多详细信息:https://stackoverflow.com/a/13497992/2347353 .但对于任何在家尝试此操作的人,请务必注意警告,这完全基于 Apple 的 Core Data 内部实现细节,并且可能在未来的任何时候停止工作。

关于ios - 核心数据二进制数据允许外部存储崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53300900/

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