时间:2021-05-02
前言
最近Swift 4发布了,完整的更新日志请点击这里 >>:,我大概看了下官方的更新日志,因为xcode9同时支持Swift4和Swift3.2,所以在升级Swift4的时候心没有那么的痛,在转换成Swift4时错误集中在添加@objc上,如果项目是OC和Swift共存的项目,那么添加@objc会让你加到怀疑人生。
下面主要给大家介绍了在更新过程中遇到的一些问题,下面话不多说了,来一起看看详细的介绍吧。
@objc
1、在Swift4中,OC和Swift共存的项目不再无脑将Swift的Public属性和方法提供给OC,除非Swift中的方法和属性用@objc标记,这样就减少了一些代码的生成从而减少了包的大小。build之后我们是纯swift项目所以大部分是在选择器调用的方法前面也要添加@objc。
2、我们的项目是Swift的项目所以build保存很快就修改完成,Run起来后如期的Crash了。这个是因为我们的JSON转Model是使用的OC版的Mantle和SwiftJSON进行的解析,那么就要在所有的Model属性前面添加@objc,不然Mantle在获取类属性类型的时候是空的。看到这个时候内心是崩溃和拒绝升级Swift4的,所以我们选择舍弃Mantle使用Codable。
Codable( 官方文档)
1、在OC中JSON转Model只能转化为对象类型,在Codable支持JSON转为常规类型。而遇到的更多的是将数据模型中的NSNumber改为Int或者Double,这是因为NSNumber是OC的类型不遵守Codable的。
2、有时候我们会在Model中添加一些JSON串没有的字段进行逻辑处理,类似
? 1 2 3 4 struct A: Codable{ var a: Int? var isSelect: Bool = false }因为"isSelect"是为了逻辑处理在JSON串中并不能找到相应的字段,这个时候就会报出数据丢失的错误,而我们只需要将“isSelect”改成可选就可以了。
? 1 2 3 4 stuct A: Codable { var a: Int? var isSelect: Bool? }在这次升级中主要是在改这OC调用Swift添加@objc的问题和将数据解析改成Codable。还有一些错误是因为使用Mantle转JSON串出现的问题只要使用JSONEncode,还有会多出字符串长度判断使用characters的警告删除它就OK了。
平常使用泛型一个很烦的操作
我定义一个带有泛型的方法
? 1 2 private func getData<T>(a: T) { }直接调用
? 1 self.getData<A>(a)因为不知道泛型的类型而出现
? 1 Cannot explicitly specialize a generic function的错误, 如果不指定类型
? 1 self.getData(a)会出现下面的额错误
? 1 Generic parameter 'Element' could not be inferred只能在使用时进行一次强转
? 1 self.getData(a as A)就是让Xcode推断出他的类型而不是你告诉他这个泛型是什么类型,这就很烦。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对服务器之家的支持。
原文链接:https://juejin.im/post/5a3895ac5188252bca04fbed
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前言Swift4.2是Swift4的第二次小更新,随之带来了很多很棒的改进-这使得今年将成为Swift的重要一年,并且更加确认这个社区驱动的Swift演变进程正
前言Swift4是苹果计划于2017年秋季推出的最新版本,其主要重点是提供与Swift3代码的源兼容性,并努力实现ABI稳定性。从Swift4开始提供的Deco
?越来越多的企业网站都在做SEO优化,我们都知道做网站优化的一些优势,但是在优化的过程中往往会遇到一些问题,有时我们网站的快照更新慢或者不更新,遇到这种问题大家
前言最近工作比较忙,但是还是出来更新博客了。今天博客中所涉及的内容并不复杂,都是一些平时常见的一些问题,通过这篇博客算是对UITableView中使用定时器的几
IOSswift总结NavigationController出现问题及解决方法最近用Swift语言做了一些iOS项目,颇有些心得,记下一些深刻的问题造福自己,服