【发布时间】:2015-11-17 12:48:01
【问题描述】:
我目前正在调查一个据称通过NSKeyedArchiver 存储的文件的解压缩过程中发生的崩溃。崩溃日志包含文件的前 8 个字节(我只包括下面的前 2 个)。
Fatal Exception: NSInvalidArgumentException
*** -[NSKeyedUnarchiver initForReadingWithData:]: incomprehensible archive (0xffffffa6, 0xffffff9e, ...)
我无法使用 ASCII、Base64、UTF8 或 UTF16 将这些字节解码为有用的内容。有谁知道NSKeyedArchiver 使用哪种文件格式和/或字符编码,或者我如何将这些字节解码为人类可读的内容?
【问题讨论】:
-
也许您无法将其解码为任何合理的事实正是因为它已损坏。
-
@Avi 是的,这可能是正确的。奇怪的是,写入文件的唯一方法是通过
NSKeyedArchiver- 至少据我所知。因此,我希望有一种方法可以手动将存档解码为人类可读的内容。 -
它可能是一个二进制 plist。
-
确实是二进制plist。您可以在存档文件上使用
plutil -p。还有其他选项可以检查完整性。 -
@Avi 谢谢。不幸的是,
plutil命令似乎无法从文件的开头生成人类可读的格式。我只有前几个字节,因为崩溃日志来自 Fabric。
标签: ios nscoding nskeyedarchiver