Swift2.3迁移到Swift3.0

2018-08-08  本文已影响0人  一念飘过

记录自己项目Swift2.3迁移到Swift3.0的一些难处理的点,和遇到的坑。

一般的整体迁移的话,就看其他的博客或者简书就够了,我这里记录的是和一般情况不一样的错误修改点。属于对症下药。

1,LRTextField类库的方法找不到问题,次类库是OC的,后来就不更新了,升级到swift3.0之后就报方法找不到的情况,如图:

这种情况看了下他的源码,原来是次方法只有在.m文件的实现,在.h文件里面没有了声明(对外接口没有了)手动加上方法的声明就可以了。

- (instancetype) initWithFrame:(CGRect)frame;

- (void) runValidationViewAnimation:(NSDictionary *)validationInfo;

由于此类是pods 导进去的,所以下次还是会出现这种问题,那么为了防止pod更新之后还会出现这种问题,那么请对此第三方类库进行类扩展。

2,UISegmentedControl点不出来selectedSegmentIndex

解决方案:增加 as AnyObject 就可以了点出了,具体有效果没,还需验证下,现在还在持续修改工程项目中。

3,let doubleNum = (redValue as NSString).doubleValue报错;

换成: let doubleNum = Double(redValue!)

4,之前的一些判断抛错: if (((stute as AnyObject).boolValue)! == 1){}

改为: if ((stute as! GPBValue).boolValue){}

5,定时器报错:

let timer:DispatchSource = DispatchSource.makeTimerSource(flags: DispatchSource.TimerFlags(rawValue: UInt(0)), queue: quene) as! DispatchSource

timer.setTimer(start: DispatchWallTime(time: nil), interval: NSEC_PER_SEC*1, leeway: 0)  //这段报错;

改为:

let timer:DispatchSource = DispatchSource.makeTimerSource(flags: DispatchSource.TimerFlags(rawValue: UInt(0)), queue: quene) as! DispatchSource

let pageStepTime: DispatchTimeInterval = .seconds(1)n

timer.scheduleRepeating(deadline: DispatchTime.now(), interval: pageStepTime, leeway: DispatchTimeInterval.seconds(0))

6,用到第三方库文件 Charts 其中这3个地方报错:

1>,  let dataSet = PieChartDataSet(values: [BarChartDataEntry(value: percentage, xIndex: 0), BarChartDataEntry(value: 100.0 - percentage, xIndex: 1)]?, label: "")

2>, let data = PieChartData(xVals: [""], dataSet: dataSet)

3>,  data.setValueFormatter(pFormatter)

改为:

1>, let dataSet = PieChartDataSet(values: [BarChartDataEntry(x:percentage, y: 0),BarChartDataEntry(x: 100.0 - percentage, y: 1)], label: "")

2>,  data = PieChartData(dataSet: dataSet)

3>, data.setValueFormatter(pFormatter as! IValueFormatter)

今天就先修改这么多吧。明天继续。。。

上一篇 下一篇

猜你喜欢

热点阅读