博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS swift2.3 迁移到3.0 遇到的一些问题
阅读量:6969 次
发布时间:2019-06-27

本文共 1905 字,大约阅读时间需要 6 分钟。

       在swift2.3的时候,因为项目需求,需要做一个能够根据加速度来得到你行走的计步器,然后做完计步器,每走一步路后,通过跳转,跳到主线程进行画图画点。

       然而最近一段时间,电脑更新到了Xcode8.0 ,一下子就能用swift3.0了,想到swift3.0官方说明是可以进行版本继承的,所以就将计步器改成3.0版本,但是遇到了以下的一些问题:

以下由这个几个错误组成:

错误一: (data[0] as AnyObject) .doubleValue

错误原因: '(AnyObject)' is not a subtype of 'NSNumber'

错误二:userInfo: nil

错误原因: Extra argument 'userInfo' in call

错误三: for  i = 4 ; i < len-1 ; i += 1

错误原因:C-style for statement has been removed in Swift 3

错误四: aez = (Double)((userAccelerationx*orientationycos*orientationzsin)-(userAccelerationy*orientationysin)+(userAccelerationz*orientationycos*orientationzcos))

错误原因:: Expression was too complex to be solved in reasonable time; consider breaking up the expression into distinct sub-expressions

第一个错误是在类型转换时遇到的错误,原来现在的版本数据类型可以直接将double放在最前面,然后要加上数据类型,应该改成以下几个版本:

(data[0]as!NSNumber) .doubleValue

Double(self.acclerometerdata[0]as!NSNumber)

Double((self.acclerometerdata[0]asAnyObject)as!NSNumber)

以上的三种写法都是正确的。

第二个错误是在写通知时遇到的错误:

原先的通知写法是:

NotificationCenter.defaultCenter.postNotificationName("Notificationaddstteps",object: self, userInfo: ["value3":5])

以上写法是swift2.3版本写法,swift3.0不支持,需要改成下面版本写法:

NotificationCenter.default.post(name: NSNotification.Name(rawValue:"Notificationaddstteps"), object:self, userInfo:["value3":5])

第三个错误是,因为版本改变出现了一些变化:

Swift 3.0更加规范化,当项目从Swift 2.0升级至Swift 3.0时,需要注意以下几点:

1、方法的参数标签不可省略,从第一个参数就必须指定参数名,除非使用"_"明确指出省略参数;

2、枚举值的首字母统一为小写;

3、Swift 3.0取消了C风格的for循环,for var i = 0 ;i < 10 ; i += 1语句变更为:for i in 0 ..< 10

4、枚举成员首字母变成小写;

5、按钮的Normal状态去掉,按钮状态UIControlState()相当于原来的.Normal;

6、取消++、--操作符;

7、方法名使用动词,其他名词、介词等作为参数或移除

所以需要使用for i in 0 ..< 10 这种方法了。

第四个错误是因为它现在似乎不支持超长数据的转换,我将它进行一个一个数据转换久可以成功运行了,及改成如下版本:

aez = (Double)(userAccelerationx*orientationycos*orientationzsin)-Double(userAccelerationy*orientationysin)+Double(userAccelerationz*orientationycos*orientationzcos)

就不会报错。

更加具体的swift3.0 可以看官方文档:

现在版本Xcode8.0和 iOS10可以看看下面大家整理的资料:

cc网总结帖:

iOS10整理资料:

转载地址:http://tfssl.baihongyu.com/

你可能感兴趣的文章
STL - 容器 - Deque
查看>>
pureftp在centos下与MySQL搭配使用
查看>>
Mysql 5.7 Gtid内部学习(五) mysql.gtid_executed表/gtid_executed变量/gtid_purged变量的更改时机...
查看>>
【AIX】3004-314 Password was recently used and is not valid for reuse
查看>>
spring boot项目中处理Schedule定时任务
查看>>
朋友圈的人脉关系的算法
查看>>
Windows远程桌面连接Ubuntu 14.04 (转)
查看>>
最简单易懂的SpringCloudSleuth教程
查看>>
IBM苏中:怎样利用深度学习、增强学习等方法提高信息处理效率
查看>>
创业者融资有新招,对接服务最有效
查看>>
为什么可视化数据有一定的误差值?
查看>>
HTTPS及HTTPS中间人攻击
查看>>
Android应用安全风险与防范
查看>>
福州启动国家健康医疗大数据中心与产业园建设
查看>>
土豪逆袭:中国移动反超联通成为第二大宽带运营商
查看>>
硅谷亿万富翁彼得·泰尔的神秘大数据公司在新西兰遭审查
查看>>
参加工业软件与制造业融合发展高峰论坛 用友3.0加速落地
查看>>
赌Impinj就是赌RFID行业
查看>>
亚马逊数据专家十年经验总结:成为数据科学家的关键四步
查看>>
普京签订反恐法:互联网公司将增加数十亿美元成本
查看>>