

GitHub - devxoul/Then: ✨ Super sweet syntactic sugar for Swift initializers
source link: https://github.com/devxoul/Then
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

README.md
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 ofNSObject
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'
-
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), ] )
License
Then is under MIT license. See the LICENSE file for more info.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK