gpt4 book ai didi

objective-c - NSKeyedUnarchiver 的 NSMutableData 限制

转载 作者:行者123 更新时间:2023-12-04 06:21:31 25 4
gpt4 key购买 nike

我在另一篇文章 ( Archiving / Unarchiving results in initForReadingWithData incomprehensible archive ) 上读到过,您不能在 NSMutableArray 上存储超过 250kBytes。不幸的是,为了使用 NSKeyedUnarchiver 恢复此类数据,您必须使用 NSMutableArray。我正在尝试取回大小约为 500kB 的图像。

  MTMessage *message = [NSKeyedUnarchiver unarchiveObjectWithData:data];

我得到的错误是:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSKeyedUnarchiver initForReadingWithData:]: incomprehensible archive (0x0, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x0, 0x1)'



显然,这是一种非常普遍的情况(尽管我还没有找到解决方案)。您是否知道如何绕过 NSMutableData 的使用。
谢谢你。

编辑:实际上它说数据的大小为 524 288 字节,这是正确的,因此问题可能来自解压缩程序。

最佳答案

NSKeyedArchiver不依赖于 NSArray (不可变或不可变)。

我也不知道与 NSKeydArchiver 相关并取决于存档大小的错误。

以下代码在 Lion 上运行良好:

NSMutableData *data = [NSMutableData data];
for (uint32_t i = 0; i < 1024 * 1024; ++i)
[data appendBytes:&i length:sizeof(uint32_t)];

NSData *archive = [NSKeyedArchiver archivedDataWithRootObject:[NSMutableArray arrayWithObject:data]];
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:archive];

assert([data isEqual:[array lastObject]]);

请提供更多代码以更深入地了解您的实际问题。您是否可能试图取消存档编码图像而不是存档?

关于objective-c - NSKeyedUnarchiver 的 NSMutableData 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6493172/

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