Formatter — ano ito, mga input formatter at NSFormatter

May-akda: IT Sectr Nai-publish: 2026-07-08 Oras ng pagbabasa: 8 min

Formatter sa iOS ay isang mekanismo ng pag-format ng input data na awtomatikong nagko-convert ng hindi nakabalangkas na teksto sa isang tinukoy na format. Ang mga system class na NSFormatter at InputMask ay nagpapahintulot sa pagproseso ng mga numero ng telepono, credit card, petsa at iba pang nakabalangkas na data. Ayon sa Apple Foundation Framework Reference (2025), ang tamang pag-format ng input ay nagbabawas ng bilang ng mga error sa pagpuno ng mga form ng 55% at nagpapabilis ng input data ng 30%.

Mga Pangunahing Punto

  • Formatter — system mechanism ng iOS para sa awtomatikong pag-format ng input data sa isang tinukoy na template
  • NSFormatter — abstract class ng Foundation na pinagbatayan ng NumberFormatter, DateFormatter at iba pa
  • Input Mask — library ng input masking para sa pag-format ng mga numero ng telepono, card, petsa at code
  • Phone Number Kit — framework ng Apple para sa pag-format at pag-validate ng mga numero ng telepono
  • Mga input mask ay tumutukoy sa template (hal. +7 (___) ___-__-__) at awtomatikong naglalagay ng mga separator

Ano ang Formatter sa iOS?

Formatter sa iOS ay isang component na nagko-convert ng raw user input sa isang structured format ayon sa isang tinukoy na template. Hindi tulad ng simpleng pag-validate pagkatapos ng pagsusumite ng form, ang formatter ay gumagana sa real-time, nagwawasto ng display ng data habang ito ay ipinapasok.

Ang iOS ay nagbibigay ng ilang antas ng pag-format: system Foundation formatters (NumberFormatter, DateFormatter, ByteCountFormatter) para sa display ng data, PhoneNumberKit framework para sa mga numero ng telepono, at third-party InputMask library para sa arbitrary input masks.

Ayon sa Apple Human Interface Guidelines, ang input formatters ay sumasagot ng tatlong gawain: nagbabawas ng cognitive load, nagbabawas ng bilang ng mga error, at nagpapabilis ng pagpuno ng form.

Ang mga formatter ay lalong mahalaga para sa mga mobile device, kung saan ang pag-input ng data gamit ang on-screen keyboard ay nangangailangan ng mas maraming pagsisikap kaysa sa pisikal.

Mga uri ng input formatter

Input formatters sa iOS ay nahahati sa tatlong kategorya: system Foundation formatters, specialized Apple formatters (PhoneNumberKit), at third-party library (InputMask, MaskedTextField).

System Foundation formatters

NumberFormatter ay nagfo-format ng numeric values. DateFormatter ay nagko-convert ng mga petsa at oras sa localized strings.

PhoneNumberKit

PhoneNumberKit — Apple library para sa pag-format ng mga numero ng telepono ayon sa pambansang pamantayan.

Input Mask library

Third-party library InputMask ay nagbibigay ng universal input masking mechanism para sa anumang format: card numbers (0000 0000 0000 0000), dates (MM.DD.YYYY), TIN (000000000).

UriFrameworkLayuninMode ng trabaho
NumeroNumberFormatterPera, porsyento, siyentipikoDisplay
PetsaDateFormatterPetsa, oras, timestampDisplay
TeleponoPhoneNumberKitNumero ayon sa pamantayan ng bansaInput + validation
MaskInputMaskCard, code, TINReal-time input

Abstract class na NSFormatter

NSFormatter — ay isang abstract Foundation class na minamana ng lahat ng system iOS formatters. Ito ay tumutukoy ng dalawang pangunahing pamamaraan: string(for:) at getObjectValue(_:for:errorDescription:). Apple ay nagrerekomenda ng paggamit ng mga umiiral na Foundation formatters. NSFormatter ay sumusuporta din sa localization ng mga error message.

Input Mask at input masking

Input Mask — isang template na tumutukoy sa format ng input data at awtomatikong naglalagay ng mga separator habang nagta-type. Ang pinakasikat na library para sa iOS — InputMask mula sa RedMadRobot. Sinusuportahan nito ang kumplikadong mask na may mga kondisyon at opsyonal na bloke.

Pag-format ng mga numero ng telepono

Pag-format ng mga numero ng telepono — ang pinakakaraniwang sitwasyon ng paggamit ng formatter sa mobile apps. Ang iOS ay nagbibigay ng PhoneNumberKit framework para dito. Mula noong iOS 16, may built-in na mekanismo sa pamamagitan ng UIContentUnavailableConfiguration.

Pagpapatupad ng formatter sa Swift

Pagpapatupad ng formatter sa Swift ay depende sa napiling approach. Para sa system Foundation formatters, ginagamit ang formatter property na available mula noong iOS 15 para sa UITextField.

swift
import PhoneNumberKit

class PhoneViewController: UIViewController {

    let phoneNumberKit = PhoneNumberKit()
    @IBOutlet var phoneField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        phoneField.delegate = self
    }
}

extension PhoneViewController: UITextFieldDelegate {
    func textField(
        _ textField: UITextField,
        shouldChangeCharactersIn range: NSRange,
        replacementString string: String
    ) -> Bool {
        guard let text = textField.text else { return true }
        let partial = (text as NSString).replacingCharacters(in: range, with: string)
        textField.text = partial.applyPhoneMask()
        return false
    }
}

Para sa NumberFormatter mula noong iOS 15+, ang formatter property ay available sa UITextField, na awtomatikong nagfo-format ng input number habang nagta-type.

swift
let amountField = UITextField()
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.locale = Locale(identifier: "ru_RU")
amountField.formatter = formatter

Para sa InputMask RedMadRobot, configuration ay ginagawa sa pamamagitan ng initialization ng mask at application sa pamamagitan ng delegate.

swift
import InputMask

class CardViewController: UIViewController {
    @IBOutlet var cardField: UITextField!
    var listener: MaskedTextFieldDelegate!

    override func viewDidLoad() {
        super.viewDidLoad()
        listener = MaskedTextFieldDelegate(
            primaryMaskFormat: "[0000] [0000] [0000] [0000]"
        )
        cardField.delegate = listener
    }
}

Mga Madalas Itanong

Aling formatter library ang mas mabuti para sa iOS?

Para sa mga numero ng telepono — PhoneNumberKit, para sa mga general purpose mask — InputMask mula sa RedMadRobot. Para sa mga numero at petsa, sapat na ang system NumberFormatter at DateFormatter.

Gumagana ba ang formatter sa UITextView?

Oo, UITextView ay sumusuporta sa parehong mga delegate at shouldChangeCharactersIn method gaya ng UITextField.

Paano pangasiwaan ang paste ng text na may formatter?

Ang paste ay pinangangasiwaan sa pamamagitan ng parehong shouldChangeCharactersIn delegate. Ang magandang formatter ay unang nag-aalis ng lahat ng separator mula sa nai-paste na text, pagkatapos ay naglalapat ng mask sa malinis na data.

Kailangan ba ng formatter para sa email field?

Hindi, ang email ay walang fixed format na may mga separator. Para sa email, sapat na ang pag-set ng textContentType = .emailAddress at keyboard na may @ symbol.

Paano nakakaapekto ang formatter sa performance?

Ang mga modernong formatter ay nagpo-proseso ng input sa mas mababa sa 1 ms bawat character. Ang delay ay hindi napapansin ng user. Ang InputMask at PhoneNumberKit ay na-optimize para sa real-time na operasyon.

Buod

  • Formatter — iOS mechanism para sa awtomatikong pag-format ng structured data sa real-time
  • System Foundation formatters (NumberFormatter, DateFormatter) ay angkop para sa mga numero at petsa
  • PhoneNumberKit — solusyon para sa pag-format ng numero ng telepono ayon sa pamantayan ng 200+ bansa
  • Input Mask — universal tool para sa input masks ng anumang structured data
  • Input mask nagbabawas ng bilang ng error sa pagpuno ng form ng 55% ayon sa Apple
  • UITextFieldDelegate — pangunahing paraan ng pagsasama ng formatter sa text fields
  • Rekomendasyon — gumamit ng formatter para sa lahat ng field na may structured data format

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din