为什么我不能在NSKeyedArchiver中编码NSValue?

内文·金

我试图对MKMapView中心进行编码,然后跨入一个NSKeyedArchiver状态保存。我发现了几个方便的新MapKitNSValue附加项,valueWithMKCoordinate:valueWithMKCoordinate:尝试将它们编码到密钥存档器中失败:

- (void)encodeRestorableStateWithCoder:(NSCoder *)coder
{
    NSValue *mapCenterValue = [NSValue valueWithMKCoordinate:mapView.centerCoordinate];
    NSValue *mapSpanValue = [NSValue valueWithMKCoordinateSpan:mapView.region.span];
    [coder encodeObject:mapCenterValue forKey:kMapCenter];
    [coder encodeObject:mapSpanValue forKey:kMapSpan];
}

由于未捕获的异常“ NSInvalidArgumentException”而终止应用程序,原因:“-[-NSKeyedArchiver encodeValueOfObjCType:at:]:此存档器无法编码结构”

我知道解决此问题的方法是将单个双精度编码为四个单独的键。

我的问题是为什么会这样。AnNSValue是一个对象,所以为什么告诉我“此存档器无法编码结构”

谢尔盖·卡里尼琴科(Sergey Kalinichenko)

根据该NSKeyedArchiver课程的文档

密钥归档文件与非密钥归档文件的不同之处在于,编码给该归档文件的所有对象和值都被赋予了名称或键。

为了存档a的元素struct并为其提供密钥,NSKeyedArchiver需要元数据来知道a的每个字段struct位于何处以及这些字段的名称是什么。@encode存储与NSValue给它约的布局足够的信息struct,但对每个字段的名称的信息丢失。

由于没有有关中的字段名称的元数据struct,因此无法以确保正确取消归档的方式归档数据。这就是为什么NSKeyedArchiver必须拒绝NSValue使用嵌入式C归档原因struct

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我不能在wxPython中销毁我的StaticText?

来自分类Dev

为什么我不能在 Flatlist 中显示我的项目?

来自分类Dev

为什么我不能在异步方法中调试代码?

来自分类Dev

为什么我不能在熊猫函数中应用shift?

来自分类Dev

为什么我不能在Typescript中扩展“ any”?

来自分类Dev

为什么我不能在Python中更改类的属性

来自分类Dev

为什么我不能在Python中创建这样的对象?

来自分类Dev

为什么我不能在Integer类中覆盖self?

来自分类Dev

为什么我不能在RStudio中安装“预测”包?

来自分类Dev

为什么我不能在表中插入数据?

来自分类Dev

为什么我不能在界面中访问此字段?

来自分类Dev

为什么我不能在Yii中更新此模型?

来自分类Dev

为什么我不能在iOS中更改按钮标题

来自分类Dev

为什么我不能在xcode中设置属性的值?

来自分类Dev

为什么我的模型不能在serviceRepository laravel中工作?

来自分类Dev

为什么我不能在DB中写数据帧?

来自分类Dev

为什么我不能在C ++中映射结构?

来自分类Dev

为什么我不能在iframe中嵌入特定的网址?

来自分类Dev

为什么我不能在Vue中访问html canvas?

来自分类Dev

为什么我不能在回调中调用useRef?

来自分类Dev

为什么我的硒不能在python脚本中工作?

来自分类Dev

为什么我不能在Mirth中访问xml消息?

来自分类Dev

为什么我不能在React中更改输入值?

来自分类Dev

为什么我不能在componentDidMount中收到引用?(反应)

来自分类Dev

为什么我不能在netlify中运行此脚本?

来自分类Dev

为什么我不能在声明中定义静态字段?

来自分类Dev

为什么我不能在/ sys中创建目录

来自分类Dev

为什么我不能在GWTP的UiBinder中清除FlexTable?

来自分类Dev

为什么我不能在Ubuntu中打开txt文件?

Related 相关文章

  1. 1

    为什么我不能在wxPython中销毁我的StaticText?

  2. 2

    为什么我不能在 Flatlist 中显示我的项目?

  3. 3

    为什么我不能在异步方法中调试代码?

  4. 4

    为什么我不能在熊猫函数中应用shift?

  5. 5

    为什么我不能在Typescript中扩展“ any”?

  6. 6

    为什么我不能在Python中更改类的属性

  7. 7

    为什么我不能在Python中创建这样的对象?

  8. 8

    为什么我不能在Integer类中覆盖self?

  9. 9

    为什么我不能在RStudio中安装“预测”包?

  10. 10

    为什么我不能在表中插入数据?

  11. 11

    为什么我不能在界面中访问此字段?

  12. 12

    为什么我不能在Yii中更新此模型?

  13. 13

    为什么我不能在iOS中更改按钮标题

  14. 14

    为什么我不能在xcode中设置属性的值?

  15. 15

    为什么我的模型不能在serviceRepository laravel中工作?

  16. 16

    为什么我不能在DB中写数据帧?

  17. 17

    为什么我不能在C ++中映射结构?

  18. 18

    为什么我不能在iframe中嵌入特定的网址?

  19. 19

    为什么我不能在Vue中访问html canvas?

  20. 20

    为什么我不能在回调中调用useRef?

  21. 21

    为什么我的硒不能在python脚本中工作?

  22. 22

    为什么我不能在Mirth中访问xml消息?

  23. 23

    为什么我不能在React中更改输入值?

  24. 24

    为什么我不能在componentDidMount中收到引用?(反应)

  25. 25

    为什么我不能在netlify中运行此脚本?

  26. 26

    为什么我不能在声明中定义静态字段?

  27. 27

    为什么我不能在/ sys中创建目录

  28. 28

    为什么我不能在GWTP的UiBinder中清除FlexTable?

  29. 29

    为什么我不能在Ubuntu中打开txt文件?

热门标签

归档