Swift 4.2的新功能

苹果已经发布了Swift 4.2,这似乎是明年推出Swift 5的第一步。 现在,我们将看到Swift 4.2中的一些改进,这些改进可能会在我们的项目中派上用场。

随机数:

在Swift 4.2之前:

 让randomNumber = arc4random_uniform(50) 

上面的代码生成UInt32类型的1到50的随机数。

在Swift 4.2中:

 让randomNumber = Int.random(in:1 .. <50) 

上面的代码在这里生成1到50之间的Int类型的数字。 上面的方法适用于类似的数据类型,例如Float,Double,CGFloat等。如果要生成随机布尔值,则可以使用Bool.random()轻松完成。 上面的另一个补充是我们还可以从像

 让汽车= [“福特”,“丰田”,“大众”,“奔驰”] 
  print(cars.randomElement())//从上面的cars数组中打印任何一个。 

改组:

改组属性可能会在您像纸牌游戏那样在某处随机生成排列的地方派上用场。

  var卡= [“杰克”,“国王”,“女王”] 
  cards.shuffle()//将对数组元素进行重新排序 
 或let cards = cards.shuffled()//将重新排序的数组分配回cards变量 

序列命名的改进:

在Swift 4.2之前:

  let array = [“苹果”,“芒果”,“橙色”] 
 如果让appleFruit = array.index(其中:{$ 0 ==“苹果”)}),{ 
打印(“发现苹果”)
}其他{
打印(“找不到苹果”)
}

上面的代码获取数组中第一个元素的索引,该索引等于“ apple”

快速4.2

 如果让firstFruit = array.firstIndex(其中:{$ 0 ==“苹果”)}),{ 
打印(“发现苹果”)
}其他{
打印(“找不到苹果”)
}

index(where :)成为firstIndex(where :),以确保正确的命名约定并避免混淆。

枚举的所有新情况:

通常,我们遇到一个需要所有可用枚举类型集合的场景。

在Swift 4.1之前:

 枚举汽车:字串{ 
 案例福特=“福特” 
 情况奔驰=“奔驰” 
 案例Audi =“ Audi” 
  static let allValues = [福特,奔驰,奥迪] 
  } 

例如,如果需要打印所有汽车的列表,则必须添加一个名为allCars的附加变量,该变量是所有可用类型的数组。

在Swift 4.2中:

默认情况下,我们有一个新的allCases属性,该属性列出了所有可用的枚举,因此我们不必手动为其添加属性。 但是,我们必须将CaseIterable添加到声明中,以使allCases属性可用。

我们可以称该属性为

 枚举汽车:CaseIterable { 
 案例福特=“福特” 
 情况奔驰=“奔驰” 
 案例Audi =“ Audi” 
  } 
 在Cars.allCases中用于汽车{ 
  print(car)//将打印“福特”,“奔驰”,“奥迪” 
  } 

#warning和#compiler指令

通常,我们使用一种称为TODO:-的方法来提醒开发人员在以后的某个时间执行某些任务,或者使用FIXME:-这是开发人员必须修复的错误或问题。 但是上述问题是,开发人员很可能忽略上述更改。 要为每个“ TODO”或“ FIXME”标签触发警告,您可能必须在XCode中添加一个构建脚本,如下所示:

  TAGS =“ TODO:| FIXME:” 
 找到“ $ {SRCROOT}”(-name“ .h” -or -name“ .m” -or -name“ .swift” -type f)-print0 |  xargs -0 egrep --with-filename --line-number --only-matching“($ TAGS)。\ $” |  perl -p -e“ s /($ TAGS)/警告:\ $ 1 /” 

从Swift 4.2:

他们添加了新的编译器指令,可帮助我们标记代码中的问题。

#warning:这对于提醒开发人员以后必须执行的某些任务很有用。

  func example(){ 
  / * — * / 
#warning(“此方法需要改进”)
  } 

#error:当您无法解决某些问题而无法继续时,这很有用。 就像在运送图书馆时提供api密钥一样

  func凭据(){ 
 让用户名=“” 
ler password =“”
 如果username.isEmpty ||  password.isEmpty { 
#error(“用户名和密码是必需的”)
}
  / * — * / 
  } 

结论

Swift 4.2在许多Swift 4.1功能的基础上进行了改进,这使开发人员的工作变得更加轻松,也为Swift 5铺平了道路。与Swift 4.2协同工作非常棒,并期待将于明年初发布的Swift 5。