原生Swift的模式解析
介绍:我是Nick O’Neill,今天我们要学习如何发现Swift模式。
设计模式总的来说,是编程中的一个组成部分,它可以解决一个非常具体的问题。应用正是由各种各样的这些模式所组成的。
一个简单的模式可以是这样的:通过一次点击,应用就进入下一屏。而复杂一些的模式则是那些你用来获取核心数据的东西。一名优秀的编程人员,就必须要知道哪种模式可以解决哪种问题。但是这些模式并不是静止不动的,尤其是当一种新的编程语言出现的时候,例如Swift,我们就要重新审视这些模式,看看这些模式能否被运用在新的语言中。
Swift中的模式
我写过一篇名叫《That Thing in Swift》的博客,那时我还是一名Objective-C开发人员。当Swift出现的时候,我就开始考虑这个问题,将Objective-C中的模式转移到Swift中。
静态单元格
这是一个基本的静态单元格视图。
Objective-C下的表达方式
if (indexPath.section == 0) {
if(indexPath.row == 0) {
cell.textLabel.text = @“Twitter”
} else if (indexPath.row == 1) {
cell.textLabel.text = @“Blog”
} else {
cell.textLabel.text = @“Contact Us”
}
} else {
if(indexPath.row == 0) {
cell.textLabel.text = @“nickoneill”
} else if (indexPath.row == 1) {
cell.textLabel.text = @“objctoswift”
} else {
cell.textLabel.text = @“@whyareyousodumb”
}
}
你需要不断的拆分这些段落和索引行,而且这段代码中有着大量的嵌套,看上去让人晕晕乎乎的,如果你在选择了这样的写法,那么在之后的编码过程中,你就要不断地复制这段代码。于是,代码的体积就会异常庞大,内容也会显得非常杂乱,编程人员肯定不会喜欢这样的事情。
Swift下的表达方式
let shortPath = (indexPath.section, indexPath.row)
switch shortPath {
case (0,0):
cell.textLabel.text = “Twitter”
case (0,1):
cell.textLabel.text = “Blog”
case (0,2):
cell.textLabel.text = “Contact Us”
case (1,0):
cell.textLabel.text = “@nickoneill”
case (1,1):
cell.textLabel.text = “@objctoswift”
case (1,2):
cell.textLabel.text = “@whyareyousodumb”
default:
cell.textLabel.text = “ ?\\_(θ)_/ ?”
}
而在Swift下,解决同样的问题,代码就会变成这样。代码变短了,也更清晰了,哪个编程人员不喜欢这样的代码?
所有的section都整齐的排列,你可以轻松的分辨section和row。如果你看到了枚举之外的语句,你也许应该考虑一下它对枚举会起到什么样的作用。
非常好我支持^.^
(0) 0%
不好我反对
(0) 0%
下载地址
原生Swift的模式解析下载
相关电子资料下载
- 拿下国家级信创认证!中科驭数KPU SWIFT-2200N成为国内首款满足金融业严苛要求的 163
- 中科驭数基于DPU的思威SWIFT系列智能网卡与统信软件产品完成适配 176
- 如何使用Swift提高代码质量 126
- 积木易搭Magic Swift Plus为雕刻工艺品精雕复刻提供三维数字化解决方案 274
- 词法分析-Antlr-1 235
- Kotlin 1.8.0发布,改进性能和Swift的互操作性 1044
- Swift 2023:强调并发、泛型和C++互操作性,开发Swift解析器 300
- 彩色套件创建全彩3D模型MagicSwiftPlus仅千元级 432
- Swift的使用体验与生态发展之路 981
- 如何加速apply函数600倍的技巧 627