ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Swift then 사용
    Swift 2021. 5. 10. 10:06

    Then 이란?

     

    전수열개발자님께서 만든 then은 ReadMe에 있는 예제만 보고도 우리가 흔히 쓰던 무엇을 then으로 만들었는지 알 수 있습니다. (클로저를 통해 인스턴스를 생성했을때 원하는 처리를 할 수 있음 ) 

    장점 : 코드 깔끔

    단점 : ?

    https://github.com/devxoul/Then

     

    devxoul/Then

    ✨ Super sweet syntactic sugar for Swift initializers - devxoul/Then

    github.com

     

    적용방법

    Podfile 에 

    pod 'Then' 

    을 적고 pod install 을 터미널 명령어에 쳐주면 설치 완료!

    (Podfile이 없다면 pod init ~)

     

    사용

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

    라고 나와있네요. 

     

    ReadMe에 나와있는 예시로 공부해봅시다.

    let label: UILabel = {
      let label = UILabel()
      label.textAlignment = .center
      label.textColor = .black
      label.text = "Hello, World!"
      return label
    }() // 이렇게 사용하던것을
    
    let label = UILabel().then {
      $0.textAlignment = .center
      $0.textColor = .black
      $0.text = "Hello, World!"
    } // 이렇게 바꿀 수 있습니다.

     그 외에도 내가 선언한 타입이 있다...! 하면은

    class MyType: UILabel {
    }
    
    extension MyType: Then {}
    
    let instance = MyType().then {
      $0.text = "awesome!"
    }

     

    그리고 with과 do의 개념이 있었습니다.

    아직 with은 잘 모르겟고... 내용은 아래와 같습니다.

    // 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("devxoul@gmail.com", forKey: "email")
      $0.synchronize()
    }

     

    내 프로젝트에 적용한 후 후기

    아이들이 깔끔하게 묶여서 훨씬 가독성이 좋은것 같다. 

    그런데 위의 것과 비슷하게~ 코드를 작성할 수 있는 부분을 알게 되었는데 바로 다음과 같이 작성하는 방법이다.

    let view = UILabel().with
        .backgroundColor(.red)
        .numberOfLines(2)
        .font(.systemFont(ofSize: 12, weight: .bold))
        .build()

    위와 같은 builder pattern은 https://kkimin.tistory.com/83 이 글을 참고하면 좋을 것 같다...!

    728x90

    'Swift' 카테고리의 다른 글

    Swift GCD  (0) 2021.05.11
    Swift 의 용어 (알쓸신잡편)  (0) 2021.05.10
    Multiple commands produce Error 해결방법  (0) 2021.04.21
    ARC란  (0) 2021.04.21
    Value Type과 Reference Type 이란  (0) 2021.04.20

    댓글

Designed by Tistory.