从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, radiusradius ,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(执行:{…}