Questa sembra la domanda di un'altra rete, ma penso che si adatti meglio qui piuttosto che StackOverflow, dal momento che non avrà una risposta di base.
Siamo nel contesto dello sviluppo di iOS, sto cercando di semplificare l'uso di UITextfield
. Più nello specifico, diciamo che questo è un campo di testo "Quantità" quando si collegano i soldi in un'app bancaria. C'è un limite di caratteri, ma quel limite è aumentato di 2 se c'è un ,
, quel limite non è lo stesso per tutte le valute, ecc. Ecc. Quelli tipi di regole semplici.
Al momento, utilizziamo i classici metodi di sostituzione del delegato / protocollo nel controller e digitiamo un codice per formattare e convalidare l'input.
Questo non è riutilizzabile in un modo simile, e non è pulito come mi piacerebbe che fosse.
Non importa quello che abbiamo, ecco cosa sto cercando di avere, ma non riesco a capire tutto, ed è qui che voi ragazzi entrate.
Idealmente, mi piacerebbe essere in grado di scrivere IRule
oggetti e avere un metodo di estensione sul mio campo di testo, quindi potrei mytextfield.AddRule(SomeRule);
per ogni regola di formattazione o convalida che desidero.
In questo momento, tutto quello che riesco a pensare è che il mio Rule : IRule
stia estendendo UITextFieldDelegate
, e faccio tutte le sostituzioni che voglio in quegli oggetti regole. quindi in .AddRule(IRule)
ho semplicemente impostato il delegato come nuova regola.
Funziona abbastanza bene fino a quando non voglio aggiungere più di una regola, dal momento che un oggetto può avere solo un delegato, che vanifica completamente lo scopo di avere oggetti di regole differenti.
Mi piacerebbe avere un sacco di semplici regole molto semplici, come "non dota carattere", "consente solo numeri negativi" ecc. ecc. e aggiungerli tutti al mio campo di testo. Al momento, questo non funzionerà.
Una soluzione sarebbe un modo per avere ancora oggetti di regole separati e aggiungerli tutti insieme come un set di regole in bundle e impostarlo come delegato, ma non riesco a pensare a come farlo, in modo programmatico.
Un'altra soluzione sarebbe quella di far funzionare i delegati "multipli", ma non è possibile, vero?
Un'altra soluzione sarebbe quella di utilizzare qualcos'altro interamente, ma non so che cosa possa aiutarmi. Hai?
Da tutti quei 3 percorsi possibili non so cosa si possa fare, e come ogni buon programmatore farebbe, preferirei alle persone più esperte che il percorso è più probabile che non mi costi 2 settimane in più del necessario: )
Cosa vorresti fare?
Non esitate a fare qualsiasi domanda o chiarimento che potrebbe essere necessario. Ho 2 settimane per pulire e rifattorizzare una grossa fetta della base di codice, questa è un'opportunità molto rara per uno sviluppatore, preferirei spendere per essere aiutato ad andare avanti e imparare, piuttosto che rifiutato dai moderatori.
Grazie mille per il tuo tempo, sarò qui per modificare una volta che vedo i commenti.