从Swift 2迁移到Swift 3期间的警告
编译错误部分
- 解决此警告的一种方法是将@discardableResult添加到函数的声明中
//迅速2 扩展UIView { func addHighlightedAction(_ handler:()-> Void)-> HighlightedAction { 返回HighlightedAction(view:self,handler:handler)} } buttonView.addHighlightedAction {…} ------------------------------------------- -------------------- // Swift 3 扩展UIView { @discardableResult func addHighlightedAction(_ handler:@escaping()-> Void)-> HighlightedAction { 返回HighlightedAction(view:self,handler:handler)} } buttonView.addHighlightedAction {…}
- 另一种方法是在函数前面使用“ _ =”
_ = imageBadge.autoAlignAxisToSuperviewAxis(...)
在String为nil的情况下添加默认值
//迅速2 print(“无法将\(tag.label)添加到空行。”)// Swift 3 print(“无法将\( tag.label ??“” )添加到空行。”
//迅速2 让json =尝试JSON(数据:download.receivedData!),如果json == nil {..} ---------------------------- ---------------------------------------- // Swift 3 让json =尝试JSON(数据:download.receivedData!),如果json == JSON.null {..}
//迅速2 transform = transform.rotated(作者:CGFloat( M_PI ))// Swift 3 转换= transform.rotated(作者:CGFloat( Double.pi ))
//迅速2 让日历=日历(标识符:Calendar.Identifier.gregorian) 如果calendar == nil {return nil} //此行应删除//迅速3 让日历=日历(标识符:Calendar.Identifier.gregorian)
// Xcode转换 如果让type:String = item [“ type”]。stringValue,type ==“ activity” {...} // Swift 3 让type = item [“ type”]。stringValue 如果类型==“活动” {...}
// Xcode转换 如果让信息: NSDictionary = notif.userInfo! 作为NSDictionary {...} // Swift 3 如果让info = notif.userInfo作为NSDictionary? ,
// Xcode转换 如果让keyboardSize:CGSize = value.cgRectValue.size {...} // Swift 3 让keyboardSize:CGSize = value.cgRectValue.size
//迅速2 dispatch_async_main {[弱自我 ] 处理程序(feedItemManager) } //迅速3 dispatch_async_main {[弱自我 ] 如果self == nil {返回} 处理程序(feedItemManager) }
// Obj-C 如果(Xcode 8中的(self.shouldBlurBackground && __blurRadius ){..} // Obj-C 如果(self.shouldBlurBackground && __blurRadius> 0 ){..}
在这种情况下,当期望浮点值时,函数将接收一个Double值。 幸运的是,库数学提供了两个功能
- extern double sin(double);
- extern float sinf(float);
// Obj-C CGFloat angularVelocity = fabs((fabs(pushVelocity)* sinf (angle))/ fabs(radius)); // Xcode 8中的Obj-C CGFloat angularVelocity = fabs((fabs(pushVelocity)* sin (angle))/ fabs(radius));
// Obj-C vImageBoxConvolve_ARGB8888(&effectInBuffer,&effectOutBuffer,NULL,0,0, radius , radius ,0,kvImageEdgeExtend); // Xcode 8中的Obj-C vImageBoxConvolve_ARGB8888(&effectInBuffer,&effectOutBuffer,NULL,0,0, (uint32_t)radius , (uint32_t)radius ,0,kvImageEdgeExtend);
// Obj-C [self.layer renderInContext: UIGraphicsGetCurrentContext() ]; // Xcode 8中的Obj-C CGContextRef context = UIGraphicsGetCurrentContext(); if(context!= nil){ [self.layer renderInContext:context]; }
在这种情况下,“ numBytesReceived”是Int64类型,而data.count是Int类型
//迅速2 networkRequest.numBytesReceived + = data.count // Swift 3 networkRequest.numBytesReceived + = Int64( data.count )
//迅速2 DispatchQueue.global( 优先级 : DispatchQueue.GlobalQueuePriority.default ).async(执行:{…} // Swift 3 DispatchQueue.global( qos:DispatchQoS.QoSClass.default ).async(执行:{…}