背景

HandyJSON是swift开发中常用的SON解析框架。该库由阿里巴巴技术团队研发,已经过了大量的实战积累。不再赘述。

地址:https://github.com/alibaba/HandyJSON

版本参考

针对不同的IDE环境和Swift版本,HandyJSON的版本也不一样,可以参考下表:

Xcode Swift HandyJSON
Xcode 10 Swift 4.2 4.2.0
Xcode 9.4.1以下 Swift 4 >= 4.1.1
Xcode 8.3以上 Swift 3.x >= 1.8.0

搜索版本参考如下:

-> HandyJSON (4.2.0)
   A Json Serialization & Deserialization Library for Swift
   pod 'HandyJSON', '~> 4.2.0'
   - Homepage: https://github.com/alibaba/handyjson
   - Source:   https://github.com/alibaba/HandyJSON.git
   - Versions: 4.2.0, 4.2.0-beta1, 4.1.3, 4.1.2, 4.1.1, 4.1.0, 4.0.0-beta.1, 4.0.0-beta, 1.8.0, 1.7.2, 1.7.1, 1.7.0, 1.6.1, 1.6.0, 1.5.2, 1.5.1, 1.5.0, 1.4.0, 1.3.0, 1.2.1,
   1.2.0, 1.1.0, 1.0.0, 0.4.0, 0.3.0, 0.2.0, 0.1.0 [master repo]

关于在NumberofFields 报错:

针对不同swift版本HandyJSON一直在更新版本,如果你的HandyJSON版本是1.8.0,swift版本大于3.3并且小于4,可能会在NumberofFields下crash,解决方法有两个:

1.修改库代码(不推荐),将如下代码:

var nominalTypeDescriptor: NominalTypeDescriptor? {let pointer = UnsafePointer<Int>(self.pointer)let base = pointer.advanced(by: nominalTypeDescriptorOffsetLocation)if base.pointee == 0 {// swift class created dynamically in objc-runtime didn't have valid nominalTypeDescriptorreturn nil}return NominalTypeDescriptor(pointer: relativePointer(base: base, offset: base.pointee))}

修改为:(最后一行)

var nominalTypeDescriptor: NominalTypeDescriptor? {let pointer = UnsafePointer<Int>(self.pointer)let base = pointer.advanced(by: nominalTypeDescriptorOffsetLocation)if base.pointee == 0 {// swift class created dynamically in objc-runtime didn't have valid nominalTypeDescriptorreturn nil}return NominalTypeDescriptor(pointer: relativePointer(base: base, offset: base.pointee - base.hashValue))}

或者参考官方写法:

var nominalTypeDescriptor: NominalTypeDescriptor? {let pointer = UnsafePointer<Int>(self.pointer)let base = pointer.advanced(by: nominalTypeDescriptorOffsetLocation)if base.pointee == 0 {// swift class created dynamically in objc-runtime didn't have valid nominalTypeDescriptorreturn nil}#if swift(>=4.1) || (swift(>=3.3) && !swift(>=4.0))return NominalTypeDescriptor(pointer: relativePointer(base: base, offset: base.pointee - base.hashValue))#elsereturn NominalTypeDescriptor(pointer: relativePointer(base: base, offset: base.pointee))#endif}

2.如果你的swift版本大于3.3并且小于4,升级HandyJSON至对应版本: ~> 4.1.0,如果大于4.0,参照上表升级

swift HandyJSON 使用注意事项(NumberofFields下crash)相关推荐

  1. swift 选中长按项_Swift下使用UICollectionView 实现长按拖拽功能

    导读 简单用Swift写了一个collectionview的拖拽点击排序效果; 拖拽排序是新闻类的App可以说是必有的交互设计,如今日头条,网易新闻等. GitHub地址:https://github ...

  2. swift 2.1 安裝與下載

    STEP1: 下載XCode 6" 請打開網頁,連接到此網站,取得開發工具https://developer.apple.com/swift/resources/ 點選"Downl ...

  3. Linux添加rose不能交互式登录,常见问题及注意事项 - Linux下环境安装配置Rose HA全攻略(图)_数据库技术_Linux公社-Linux系统门户网站...

    常见问题及注意事项 •  开机方法: 开机的时候我们必须注意到,必须先开磁盘阵列,等 磁盘阵列状态READY 后,再开主机,主机完全开启后,再把备机开启. •  关机方法: 关机的方法则是开机的反顺序 ...

  4. OC与Swift混编 注意事项

    前言 随着Swift发展, 很多新的项目开始使用Swift作为首选语言. Swift语言以其简洁.快速.安全的特点获得了一大波粉丝,我也是其中之一. 项目背景:公司一些旧项目大都使用OC编写, 运营中 ...

  5. Swift SnapKit布局注意事项

    SnapKit布局注意事项 Snapkit 简单布局Demo 常见问题一:updateConstraints 常见问题二:snapkit更改布局动画效果 常见问题三:两个自适应宽度控件,导致右边的自适 ...

  6. Swift HandyJSON库中的类型相互转换的实现

    前言 阅读优秀的开源框架,对提升自己的能力有很大帮助.HandyJSON库就是其中的优秀框架之一, 本文介绍一下HandyJSON库是如何处理类型间相互转换的. 我们在开发时,常见的类型转换如下: D ...

  7. CentOS下crash分析内核kdump文件方法

    1. 安装软件包: # yum install crash # yum install kernel-debuginfo 2. crash使用: # crash /var/crash/127.0.0. ...

  8. C++知识点36——使用智能指针的注意事项(下)

    四.智能指针与容器 当把shared_ptr对象放入一个容器中时,会调用shared_ptr的拷贝构造函数并且引用计数+1 int main(int argc, char const *argv[]) ...

  9. 开酒馆前的注意事项 (下)

    六.价格定位 开业之前就要定好店内的酒单,偏向于什么方面(啤酒,果酒,调酒).酒单价格需要多去参考周边酒馆酒吧的定价,再根据你酒馆的面向客群来设置定价. 七.合作共赢 除非资金充裕,一般开酒馆前都会寻 ...

最新文章

  1. VC ActiveX 控件 开发总结
  2. Socket之TCP客户端【Python】
  3. 问题:pom文件有删除线,不能识别maven模块
  4. 2018抖音数据研究报告完整版,你喜欢的网红画像到底是怎样?
  5. wpf获取当前窗体的屏幕坐标
  6. Java小游戏 超级玛丽源码分享
  7. win10 把软件窗口背景设置成豆沙绿
  8. 在计算机内部.机器码的形式,在计算机内部,机器码的形式是____。
  9. 阿里 vs. 腾讯,谁的收购更有眼光?
  10. 【翻译】Computer Vision for Autonomous Vehicles:Problems,Datasets and State-of-Art
  11. 随便画一张,奥古斯丁的世界观 及 lambda
  12. java 运算规则_java四则运算规则
  13. Actor模型的优缺点
  14. python编程 迷你世界_迷你世界迷你编程
  15. HDLBits练习汇总-14-时序逻辑设计测试--状态机(二)
  16. 利用友元函数与友元类定义复数类,实现基本运算
  17. mysql的mvcc 和next-lock
  18. 开关电源雷击浪涌整改_浪涌整改措施.doc
  19. MFC-最简单的MFC程序
  20. 国风(1)中国民族调式

热门文章

  1. Kali安装常用的软件工具——第二课
  2. Wine-QQ-TIM
  3. 安卓效率微商_机友大师app-机友大师 安卓版v2.3.4-pc6手机下载
  4. 生成特定架构内核cscope数据库
  5. ubuntu有用的网址
  6. 定投计划之兴全趋势163402
  7. 关于Oracle建表带双引号问题
  8. Linux系统引导过程及修复引导
  9. CLIP:Contrastive Language-Image Pre-Training
  10. 全面Java程序线上故障排查