github.com/phimage/Then

✨ Super sweet syntactic sugar for Swift initializers.



Documentation

Then

Swift Build Status CocoaPods Carthage compatible

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 = .blackColor()
    $0.text = "Hello, World!"
}

This is equivalent to:

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

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

let queue = NSOperationQueue().then {
    $0.maxConcurrentOperationCount = 1
}

Want to use with your own classes? Just make extensions.

extension MyClass: Then {}

let instance = MyClass().then {
    $0.really = "awesome!"
}

Real World Example

Here's an example usage in an UIViewController subclass.

final class MyViewController: UIViewController {

    let titleLabel = UILabel().then {
        $0.textColor = .blackColor()
        $0.textAlignment = .Center
    }

    let tableView = UITableView().then {
        $0.backgroundColor = .clearColor()
        $0.separatorStyle = .None
        $0.registerClass(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', '~> 0.3'
  • For iOS 8+ projects with Carthage:

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

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

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

License

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