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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值