Then 2.1.0

Then 2.1.0

TestsTested
LangLanguage SwiftSwift
License MIT
ReleasedLast Release Oct 2016
SPMSupports SPM

Maintained by Suyeol Jeon.


Downloads

Total169,615
Week7,140
Month24,186

Installs

Apps1,924
Apps WeekApps This Week 296
Pod Tries5
Test Targets249
Test WeekTests This week 43
powered by Segment

GitHub

Stars1,692
Watchers41
Forks100
Issues2
Contributors11
Pull Requests3

Code

Files1
LOCLines of Code 24


Then 2.1.0

  • By
  • Suyeol Jeon

Then

Super sweet syntactic sugar for Swift initializers.

At a Glance

Initialize UILabel then set its properties.

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

This is equivalent to:

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

Tips and Tricks

  • You can use then() to all of NSObject subclasses.

    let queue = OperationQueue().then {
      $0.maxConcurrentOperationCount = 1
    }
  • Want to use with your own types? Just make extensions.

    extension MyType: Then {}
    
    let instance = MyType().then {
      $0.really = "awesome!"
    }
  • Use with() when copying the value types.

    let newFrame = oldFrame.with {
      $0.size.width = 200
      $0.size.height = 100
    }
    newFrame.width // 200
    newFrame.height // 100
  • Use do() to do something with less typing.

    UserDefaults.standard.do {
      $0.set("devxoul", forKey: "username")
      $0.set("[email protected]", forKey: "email")
      $0.synchronize()
    }

Real World Example

Here’s an example usage in an UIViewController subclass.

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)
  }

}

Installation

  • For iOS 8+ projects with CocoaPods:

    pod 'Then', '~> 2.1'
  • For iOS 8+ projects with Carthage:

    github "devxoul/Then" ~> 2.1
    
  • For iOS 7 projects with CocoaSeeds:

    github 'devxoul/Then', '2.1.0', :files => 'Sources/*.swift'
  • Using Swift Package Manager:

    import PackageDescription
    
    let package = Package(
      name: "MyAwesomeApp",
      dependencies: [
        .Package(url: "https://github.com/devxoul/Then", "2.1.0"),
      ]
    )

License

Then is under MIT license. See the LICENSE file for more info.