Swift 初始化语法糖 Swift Then

MIT
Swift
iOS
2019-06-05
红薯

Then 是实现 Swift 对象初始化的一个语法糖

初始化 UILabel 并设置其属性

let label = UILabel().then {
  $0.textAlignment = .center
  $0.textColor = .black
  $0.text = "Hello, World!"
}

相当于:

let label: UILabel = {
  let label = UILabel()
  label.textAlignment = .center
  label.textColor = .black
  label.text = "Hello, World!"
  return label
}()

技巧

  • 在所有的 NSObject 子类中使用 then() 

    let queue = OperationQueue().then {
      $0.maxConcurrentOperationCount = 1
    }
  • 在自定义类中使用,只需进行简单扩展:

    extension MyType: Then {}
    
    let instance = MyType().then {
      $0.really = "awesome!"
    }
  • 拷贝值类型数据时候 with() 

    let newFrame = oldFrame.with {
      $0.size.width = 200
      $0.size.height = 100
    }
    newFrame.width // 200
    newFrame.height // 100
  • 使用 do() 减少类型处理

    UserDefaults.standard.do {
      $0.set("devxoul", forKey: "username")
      $0.set("devxoul@gmail.com", forKey: "email")
      $0.synchronize()
    }

真实示例:

final class MyViewController: UIViewController {

  let titleLabel = UILabel().then {
    $0.textColor = .black
    $0.textAlignment = .center
  }

  let tableView = UITableView().then {
    $0.backgroundColor = .clear
    $0.separatorStyle = .none
    $0.register(MyCell.self, forCellReuseIdentifier: "myCell")
  }

  override func viewDidLoad() {
    super.viewDidLoad()
    self.view.addSubview(self.titleLabel)
    self.view.addSubview(self.tableView)
  }

}

安装

  • For iOS 8+ projects with CocoaPods:

    pod 'Then'
  • For iOS 8+ projects with Carthage:

    github "devxoul/Then"
    
  • Using Swift Package Manager:

    import PackageDescription
    
    let package = Package(
      name: "MyAwesomeApp",
      dependencies: [
        .Package(url: "https://github.com/devxoul/Then", majorVersion: 2),
      ]
    )
的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

swift 学习资源 大集合

swift 学习资源 大集合

2014/06/07 17:08
423
3
Swift学习资源

个人整理的Swift语言学习资源集合。 苹果公司在WWDC 2014上宣布了他们将会推出一款新的编程语言,面向iOS和OS X系统的开发人员,这个新的语言被命名为Swift。

2014/06/16 17:54
174
0
SwiftStack-Swift容量管理-平滑添加/删除存储

SwiftStack在OpenStack Swift基础上开发的一种产品,当然公司的名称也同样为SwiftStack。 博客:http://swiftstack.com/blog/ SwiftStack里面有篇文章比较好的是Swift Capacity Management 即...

2014/01/24 16:00
1K
0
Openstack swift+keystone+glance安装总结

这两天在把以前安装的Swift用keystone做鉴权,主要是改了proxy-server.conf的配置,keystone和glance的安装可以参考www.chenshake.com 中节点安装中keystone安装的方法,其中的脚本不需要改动...

2012/08/09 11:12
2.8K
0
Swift3.0发布过程

本文翻译自官网Blog: https://swift.org/blog/swift-3-0-release-process/ 本文将阐述Swift 3.0的目标,发布过程以及预估进度. Swift 3.0是一个与Swift 2.2源码不兼容的主发行版. 这个版本在...

2016/05/30 17:06
966
0
在同个工程中使用 Swift 和 Objective-C(Swift 2.0更新)

本节包含内容: Mix and Match 概述(Mix and Match Overview) 在同个应用的 target 中导入(Importing Code from Within the Same App Target) 在同个 Framework 的 target 中导入(Impor...

2016/03/01 18:04
7
1
Getting Started:Ubuntu体验Swift

Ubuntu下使用Swift入门

2016/07/26 16:17
54
0
Swift2.0与OC混编实验--动态库(一)

验证OC向Swift迁移过程中遇到的一系列混编问题的解决方案,并制作了一个Demo。

2016/01/17 10:38
459
1

没有更多内容

加载失败,请刷新页面

返回顶部
顶部