값을 나타내는 수치로 0에 "공짜"또는 3자리당 쉼표로 구분된 문자열

8052 단어 XcodeSwift
안녕하십니까
Swift로 iOS 앱을 만들고 있습니다.
Int 보유 가격을 나타내는 변수 price
  • 0이면 無料
  • 로 표시됩니다.
  • 이외에 3자리마다 쉼표로 구분
  • ¥ 처음에 태그를 놓고 String으로 반환
  • 나는 함수를 하나 만들었다. 왜냐하면 이것은 여러 모델에서 필요하기 때문이다
    이번에는 프로토콜을 중심으로 PriceFormattable

    TL; DR


    프로토콜 측


    PriceFormattable.swift
    import Foundation
    
    protocol PriceFormattable {
    
        var price: Int? { get set }
    
        func priceString() -> String?
    
    }
    
    extension PriceFormattable {
    
        func priceString() -> String? {
            guard let price = price else {
                return nil
            }
    
            guard price != 0 else {
                return "無料"
            }
    
            let numberFormatter = NumberFormatter()
            numberFormatter.numberStyle = NumberFormatter.Style.decimal
    
            guard let formattedPriceString = numberFormatter.string(from: NSNumber(value: price)) else {
                return ""
            }
    
            return \(formattedPriceString)"
        }
    
    }
    

    구조체 측면


    Item.swift
    import Foundation
    
    struct Item: PriceFormattable {
        var name: String?
        var price: Int?
    }
    

    하고 있는 일


    프로토콜 측


    PriceFormattable.swift
    protocol PriceFormattable {
        var price: Int? { get set }
        func priceString() -> String?
    }
    
    채택PriceFormattable의 종류와 구조는 반드시 갖추어야 한다price.priceString() 함수.
    PriceFormattable.swift
    extension PriceFormattable {
        func priceString() -> String? {
            guard let price = price else {
                return nil
            }
            guard price != 0 else {
                return "無料"
            }
            let numberFormatter = NumberFormatter()
            numberFormatter.numberStyle = NumberFormatter.Style.decimal
            guard let formattedPriceString = numberFormatter.string(from: NSNumber(value: price)) else {
                return ""
            }
            return \(formattedPriceString)"
        }
    }
    
    아래에 프로토콜 확장을 쓰십시오.소박하기 때문에 사랑을 끊는다
    이제 price 변수를 가지고 PriceFormattable priceString() 함수를 사용하면 된다.

    설치 측면


    Item.swift
    struct Item: PriceFormattable {
        ...
    }
    
    PriceFormattable 협의.지금
    드디어 View Controller입니다.swift
    var item = Item()
    item.price = 100
    
    print(item.priceString()) // => "¥ 100"
    
    이렇게 말할 수 있다.

    좋은 웹페이지 즐겨찾기