しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

SwiftでKotlinのapplyのような事をする(Then)

Thenというライブラリを使ってKotlinのapplyに近い事をしてみました

github.com

ライブラリはSwift Package Managerで追加します
他にもCocoaPodsにも対応しています

Thenの使い方は下の通りです
thenというメソッドを呼んでその中でそのオブジェクトに対する処理を記載します

import UIKit
import Then

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let label = UILabel().then {
            $0.text = "Hello, World!"
            $0.textColor = .red
            $0.textAlignment = .center
            $0.sizeToFit()
        }
        view.addSubview(label)
        label.center = view.center
    }
}

CGRectのような構造体に対してはwithメソッドを使います
内部で元データをコピーしているのでimmutableな構造体に対しても使えます

let rect = CGRect().with {
    $0.origin = CGPoint(x: 50, y: 50)
    $0.size = CGSize(width: 200, height: 100)
}

構造体のプロパティに値を入れない場合、doメソッドを使う事もできます
doは構造体をコピーせずに使っているため、プロパティへの代入はできません

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