Skip to content

Latest commit

 

History

History
73 lines (49 loc) · 2.26 KB

iOS 15의 새로운 Formatters (feat. `formatted`).md

File metadata and controls

73 lines (49 loc) · 2.26 KB

iOS 15의 새로운 Formatters (feat. formatted)

  • 이전의 formatter 작성 방식은 몇가지 단점이 있음

    • 인스턴스화하고 유지 관리하는 데 비용이 많이 들 수 있으며, 반복 또는 기타 상황에서 올바르게 사용되지 않으면 속도가 느려지고 리소스가 과도하게 사용 됨
    • 종종 특정 구문(날짜 형식 등)이 필요하고, 일반적으로 여러 줄의 코드를 통해 Formatter 개체에 여러 속성을 설정 -> 코딩 프로세스를 더 복잡하고 / 느리게 만들고 유지 관리하기 어려
  • iOS 15에서 등장한 새로운 API포맷터 생성 프로세스를 제거하여 간단하게 함

    • 캐시해야 하는지 여부에 대해 걱정할 필요가 없음
    • 값을 따로 전달하거나 설정할 필요가 없음
  • Apple은 formatting 을 지원하는 모든 데이터 유형에 대해 .formatted 라는 새로운 인스턴스 메소드를 도입

    //전
    let dateFormatter = DateFormatter()
    dateFormatter.dateStyle = .long
    dateFormatter.timeStyle = .none
    let formattedDate = dateFormatter.string(from: Date())
    // August 14, 2021
    
    //후
    Date().formatted(.dateTime.month(.wide).year().day())
    // August 14, 2021
  • 사용 예시

    • 날짜

      Date().formatted()
      // 6/28/2021, 1:38 PM
      
      Date().formatted(date: .long, time: .omitted)
      // June 28, 2021
      
      Date().formatted(.dateTime.year())
      // Jun 2021
    • 숫자

      0.2.formatted()
      // 0.2
      
      0.2.formatted(.number.precision(.significantDigits(2)))
      // 0.20
      
      1.5.formatted(.currency(code: "thb"))
      // THB 1.50
    • 목록

      ["Alice", "Bob", "Trudy"].formatted()
      // Alice, Bob, and Trudy
      
      ["Alice", "Bob", "Trudy"].formatted(.list(type: .or))
      // Alice, Bob, or Trudy
  • 새로운 ParseableFormatStyle 프로토콜을 확장하여 Custom Formatter도 생성 가능

출처