Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/devxoul/then
✨ Super sweet syntactic sugar for Swift initializers
https://github.com/devxoul/then
swift syntactic-sugar
Last synced: 4 days ago
JSON representation
✨ Super sweet syntactic sugar for Swift initializers
- Host: GitHub
- URL: https://github.com/devxoul/then
- Owner: devxoul
- License: mit
- Created: 2015-12-24T08:29:37.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2024-03-15T01:42:13.000Z (9 months ago)
- Last Synced: 2024-12-18T16:14:28.311Z (4 days ago)
- Topics: swift, syntactic-sugar
- Language: Swift
- Homepage:
- Size: 89.8 KB
- Stars: 4,223
- Watchers: 52
- Forks: 292
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Then
![Swift](https://img.shields.io/badge/Swift-5.0-orange.svg)
[![CocoaPods](http://img.shields.io/cocoapods/v/Then.svg)](https://cocoapods.org/pods/Then)
[![Build Status](https://travis-ci.org/devxoul/Then.svg?branch=master)](https://travis-ci.org/devxoul/Then)✨ Super sweet syntactic sugar for Swift initializers.
## At a Glance
Initialize UILabel **then** set its properties.
```swift
let label = UILabel().then {
$0.textAlignment = .center
$0.textColor = .black
$0.text = "Hello, World!"
}
```This is equivalent to:
```swift
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.
```swift
let queue = OperationQueue().then {
$0.maxConcurrentOperationCount = 1
}
```- Want to use with your own types? Just make extensions.
```swift
extension MyType: Then {}
let instance = MyType().then {
$0.really = "awesome!"
}
```- Use `with()` when copying the value types.
```swift
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.
```swift
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.
```swift
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
- **Using [CocoaPods](https://cocoapods.org)**:
```ruby
pod 'Then'
```- **Using [Swift Package Manager](https://swift.org/package-manager)**:
```swift
import PackageDescriptionlet package = Package(
name: "MyAwesomeApp",
dependencies: [
.Package(url: "https://github.com/devxoul/Then", majorVersion: 2),
]
)
```## License
**Then** is under MIT license. See the [LICENSE](LICENSE) file for more info.