NSKeyedArchiver在Swift 3(XCode 8)中不起作用

亚瑟·史基尔(Arthur Shkil)

我已经将项目迁移到Swift 3,NSKeyedArchiver但无法正常工作。当尝试像这样解码对象时,我实际上遇到了运行时错误:

let startDayTime = aDecoder.decodeObject(forKey: Key.startDayTime) as! Int

它在Xcode 7.3的Swift 2.2中完美运行。还有其他人遇到过这样的麻烦吗?

PS我在模拟器和设备上都有此错误。

更新:我通过使用decodeInteger(forKey key: String)而不是解决了这个问题decodeObject(forKey key: String)出于某种原因,尽管它在Swift 2.2中确实做到了,但AnyObject在Swift 3中并未转换为Integer

James Kuang

似乎只有在Swift 2到Swift 3的更新边界上才发生这种情况,当NSKeyedArchiver在Swift 2中用a打开在Swift 2中存档的NSData blob时,NSKeyedUnarchiver我猜是在Swift 2上,BoolandInt编码为NSNumber,但是在Swift中3,它们被编码为原始BoolInt类型。我相信以下测试支持此主张:

这在Swift 3中可以取消Bool对Swift 2中编码的存档,但是nil如果Bool是在Swift 3中编码的,则返回

let visible = aDecoder.decodeObject(forKey: "visible") as? Bool

这在Swift 3中可以取消对Swift 3中的Bool编码进行存档,但是如果Bool在Swift 2中进行了编码,则会崩溃:

let visible = aDecoder.decodeBool(forKey: "visible")

我的解决方案是:

let visible = aDecoder.decodeObject(forKey: "visible") as? Bool ?? aDecoder.decodeBool(forKey: "visible")

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

NSKeyedArchiver在Swift 3(XCode 8)中不起作用

来自分类Dev

一些iOS约束在Xcode 8中不起作用(转换为Swift 3后)

来自分类Dev

Swift:NSKeyedArchiver 中的错误

来自分类Dev

pushViewController 在 swift 3 中不起作用

来自分类Dev

xcode 8 swift:展开segue传输数据不起作用

来自分类Dev

自定义字体在Swift / Xcode中不起作用

来自分类Dev

Swift 2.0 Defer在XCode 7.0.1中不起作用?

来自分类Dev

Xcode 中的 Swift Playground - TapGestureRecognizer 到 UILabel 不起作用

来自分类Dev

Swift 自动布局在 Xcode 9.3 中不起作用

来自分类Dev

日期格式在Swift 3中不起作用

来自分类Dev

CGMutablePath.addArc在Swift 3中不起作用吗?

来自分类Dev

Firebase setValue在IOS 10,Swift 3中不起作用

来自分类Dev

readWithCallback函数在Swift 3中不起作用

来自分类Dev

present(_:animated:completion :)在Swift 3中不起作用

来自分类Dev

Alamofire 超时在 Swift 3 中不起作用

来自分类Dev

DidSet 在 init 函数 swift 3 中不起作用

来自分类Dev

登录按钮在 swift 3 中不起作用

来自分类Dev

锁定方向在ipad ios 8 swift xcode 6.2上不起作用

来自分类Dev

requestRecordPermission在ios10 xcode 8 beta 3中不起作用

来自分类Dev

隐藏状态栏不起作用Swift 3,Xcode 8.0

来自分类Dev

Firebase 在 Xcode 8.3 上发布 iOS 10.3 Swift 3 FCM 通知不起作用

来自分类Dev

Bootstrap 3在IE8中不起作用

来自分类Dev

Bootstrap 3在IE8中不起作用

来自分类Dev

iOS Swift 3 CompletionHandler 不起作用

来自分类Dev

iOS Swift M3U8后台播放不起作用

来自分类Dev

Swift自动完成功能在Xcode 6 Beta中不起作用

来自分类Dev

第二个容器中的Xcode Swift按钮不起作用

来自分类Dev

在Xcode 7 / Swift 2中播放音频不起作用

来自分类Dev

CFDictionaryCreate 在 Xcode 8 swift 3 中崩溃

Related 相关文章

  1. 1

    NSKeyedArchiver在Swift 3(XCode 8)中不起作用

  2. 2

    一些iOS约束在Xcode 8中不起作用(转换为Swift 3后)

  3. 3

    Swift:NSKeyedArchiver 中的错误

  4. 4

    pushViewController 在 swift 3 中不起作用

  5. 5

    xcode 8 swift:展开segue传输数据不起作用

  6. 6

    自定义字体在Swift / Xcode中不起作用

  7. 7

    Swift 2.0 Defer在XCode 7.0.1中不起作用?

  8. 8

    Xcode 中的 Swift Playground - TapGestureRecognizer 到 UILabel 不起作用

  9. 9

    Swift 自动布局在 Xcode 9.3 中不起作用

  10. 10

    日期格式在Swift 3中不起作用

  11. 11

    CGMutablePath.addArc在Swift 3中不起作用吗?

  12. 12

    Firebase setValue在IOS 10,Swift 3中不起作用

  13. 13

    readWithCallback函数在Swift 3中不起作用

  14. 14

    present(_:animated:completion :)在Swift 3中不起作用

  15. 15

    Alamofire 超时在 Swift 3 中不起作用

  16. 16

    DidSet 在 init 函数 swift 3 中不起作用

  17. 17

    登录按钮在 swift 3 中不起作用

  18. 18

    锁定方向在ipad ios 8 swift xcode 6.2上不起作用

  19. 19

    requestRecordPermission在ios10 xcode 8 beta 3中不起作用

  20. 20

    隐藏状态栏不起作用Swift 3,Xcode 8.0

  21. 21

    Firebase 在 Xcode 8.3 上发布 iOS 10.3 Swift 3 FCM 通知不起作用

  22. 22

    Bootstrap 3在IE8中不起作用

  23. 23

    Bootstrap 3在IE8中不起作用

  24. 24

    iOS Swift 3 CompletionHandler 不起作用

  25. 25

    iOS Swift M3U8后台播放不起作用

  26. 26

    Swift自动完成功能在Xcode 6 Beta中不起作用

  27. 27

    第二个容器中的Xcode Swift按钮不起作用

  28. 28

    在Xcode 7 / Swift 2中播放音频不起作用

  29. 29

    CFDictionaryCreate 在 Xcode 8 swift 3 中崩溃

热门标签

归档