iOS swift2.3 迁移到3.0 遇到的一些问题
在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 可以看官方文档:swift.org/blog/swift-…
现在版本Xcode8.0和 iOS10可以看看下面大家整理的资料:
cc网总结帖:[总结帖]关于升级xcode8
iOS10整理资料:ios.jobbole.com/89028/
iOS swift2.3 迁移到3.0 遇到的一些问题相关推荐
- Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项(转)
Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项 参考:https://blog.csdn.net/weixin_40475396/article/detail ...
- mysql为什么直接8.0_为什么要迁移到MySQL8.0?
原标题:为什么要迁移到MySQL8.0? 来自公众号:老叶茶馆,作者:lefred,翻译:徐晨亮 原文链接:https://lefred.be/content/replace-mariadb-10-3 ...
- tensorflow1.0代码迁移到2.0官方指导
https://www.tensorflow.org/guide/migrate 解决源代码中tensorflow版本过低问题(tensorflow1.x代码迁移到2.0) 原创风一样的rain 最后 ...
- 从 Vuex 0.6.x 迁移到 1.0
从 Vuex 0.6.x 迁移到 1.0 Vuex 2.0 已经发布了,但是这份指南只涵盖迁移到 1.0?这是打错了吗?此外,似乎 Vuex 1.0 和 2.0 也同时发布.这是怎么回事?我该用哪一个 ...
- 迁移至Android3.0遇到一些问题
一.AS3.0新增功能 此处略(自行Google ) 官方文档 二.迁移后速度对比 gradle2.2 gradle3.0 首次 770s 260s 修改代码(一行) 291s 123s 修改代码(一 ...
- mongodb从2.6迁移到3.0过程
首发于 搞起博客 总共有这么几个问题需要解决: 1. mongodb3.0版本的二进制包 1. wiredTiger引擎的配置 1. 数据的迁移 1. 权限 mongodb3.0的二进制包 这个就不用 ...
- 【MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记】
MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记录-1 - likingzi - 博客园 MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记录-2 - likingzi ...
- 体验VMware Converter Client 6.2与Veeam BR 10迁移ESXi 6.0 vm到vCenter 6.7 u3
体验VMware Converter Client 6.2与Veeam BR 10迁移ESXi 6.0 vm到vCenter 6.7 u3 https://www.charflower.com/?p= ...
- 关于ios::sync_with_stdio(false);和 cin.tie(0)加速c++输入输出流
原文地址:http://www.hankcs.com/program/cpp/cin-tie-with-sync_with_stdio-acceleration-input-and-output.ht ...
最新文章
- mysql 去重求总数_Mysql获取去重后的总数
- matlab 自动控制仿真,Matlab在自动控制系统建模与仿真中的应用
- Android 屏幕适配
- Python 循环列表删除元素的注意事项
- Java Web——ResponseBean类DEMO
- 使用ArrayList时设置初始容量的重要性
- 阿里P8架构师谈:Zookeeper的原理和架构设计,以及应用场景
- mysql长连接_mysql.connector 数据库长连接
- 缓存穿透,缓存击穿,缓存雪崩以及解决方案
- android+表情雨,微信8.0.1掉落表情雨2021下载
- 爱奇艺视频怎么下载,如何将qsv格式转为mp4格式
- 移动终端3D地图应用普及或带来app产业心蓝海
- 新晋云计算工程师就业的感受和经验分享
- 设置python程序开机自启动
- ABAQUS运行问题总结
- 微信点餐系统html,微信点餐系统,一种新型的点餐方式
- [vue] transition animate.js
- 【小程序】小程序起步、WXML模板语法和WXSS模板样式
- ASEMI整流桥KBJ610,KBJ610浪涌电流,KBJ610反向电流
- MLdonkey与sancho安装使用及设置详解