全文共字,预计学习时长16分钟
本文介绍的这些Swift实用性技巧的操作说明可以用于创建iOS应用程序,希望你可从中有所收获。
1.可选项解包
varoptional1:Int?
varoptional2:Int?
//1-UglyCode
funcunwrap(){
ifleto1=optional1{
ifleto2=optional2{
//reached
}
}
}
//2-CleanCode
funcunwrap(){
guardleto1=optional1,leto2=optional2else{return}
//reached
}
解包可选变量,在一行中使用选项2处理故障。
如果两个可选值都不是nil值,则选项2会被注释。如果其中一个变量为nil值,则“返回”并退出此函数的范围。
2.三元运算符
letmyBool=true
lettestBool=myBool?false:true
lettestInt=myBool?16:8
//testBoolequalsfalse,testIntequals16becausetheinputtotheconditionalistrue,therefore
//thefirstchoiceispickedforeachoperator
//ternary
letternary=conditional?true:false
//vs.conditional
varternary=false
ifconditional{
ternary=true
}
通过这些有用的运算符,将条件逻辑压缩到一行。根据状态设置变量值。
是不是更方便?如果读起来有点难,那么可将这些运算符嵌套为紧凑的代码。
//doublestack
letternaryDouble=conditional?true:(conditional2?true:false)
//triplestack
letternaryTriple=conditional?true:(conditional2?true:(conditional3?true:false))
3.泛型
//1-UglyCode
varstrings=[Hello,This,Is,A,Test]
varintegers=[1,2,3,4,5,6,7]
funcprintStrings(_array:[String]){
forsinarray{
print(s)
}
}
funcprintIntegers(_array:[Int]){
foriinarray{
print(i)
}
}
//1-InAction
printStrings(strings)
printIntegers(integers)
//2-CleanCode
funcprintArrayT(_array:[T]){
foriteminarray{
print(element)
}
}
//2-InAction
printArray(strings)
printArray(integers)
根据谷歌定义,泛型编程是一种编写函数和数据类型的方法,同时对所使用的数据类型做出最小化假设。
考虑到抽象化,使用泛型可生成更为清晰的代码,减少错误。
如上文所示,通过选择选项2,可编写一个函数(相对于多个),处理几种不同类型的输入。
4.通过十六进制代码生成UIColor
创建一个名为UIColor+Extensions.swift的文件,包含以下代码:
importUIKit
extensionUIColor{
convenienceinit(hex:Int,alpha:CGFloat=1.0){
self.init(
red:CGFloat((hex0xFF)16)/.0,
green:CGFloat((hex0x00FF00)8)/.0,
blue:CGFloat((hex0xFF)0)/.0,
alpha:alpha
)
}
}
恭喜,现在你可通过十六进制代码生成不同颜色,如下所示:
letgreen=UIColor(hex:0x1faf46)
letred=UIColor(hex:0xfe)
letblue=UIColor(hex:0xd5)
5.使用扩展程序
importUIKit
extensionUIButton{
funcpress(