Sii paziente e leggi il mio scenario attuale. La mia domanda è di sotto.
La mia applicazione prende in input la voce e riesce a raggruppare le parole che si combinano insieme per formare una parola o un gruppo di parole - chiamate frasi; sia esso un name
, un action
, un pet
o un time
frame.
Ho una lista principale delle frasi che sono permesse e sono memorizzate nei loro rispettivi array. Quindi ho le seguenti matrici validNamesArray
, validActionsArray
, validPetsArray
e validTimeFramesArray
.
Una nuova serie di frasi viene restituita ogni volta che l'utente smette di parlare.
NSArray *phrasesBeingFedIn = @[@"CHARLIE", @"EAT", @"AT TEN O CLOCK",
@"CAT",
@"DOG", "URINATE",
@"CHILDREN", @"ITS TIME TO", @"PLAY"];
Sapendo che è ok avere la seguente combinazione per creare un comando:
COMMAND 1: NAME + ACTION + TIME FRAME
COMMAND 2: PET + ACTION
COMMAND n: n + n, .. + n
//In the example above, only the groups of phrases 'Charlie eat at ten o clock' and 'dog urinate'
//would be valid commands, the phrase 'cat' would not qualify any of the commands
//and will therefor be ignored
Domanda
Qual è il modo migliore in cui posso analizzare le frasi inserite e determinare quali frasi di combinazione soddisfano il mio elenco di comandi?
Soluzione POSSIBILE che ho trovato Un modo è di fare un passo attraverso l'array e avere if e else istruzioni che controllano le frasi future e vedere se soddisfano qualsiasi modello di comando valido dall'elenco, tuttavia la mia soluzione non è dinamica, dovrei aggiungere un nuovo set di if e altre istruzioni per ogni singola nuova permutazione di comando che creo.
La mia soluzione non è efficiente. Qualche idea su come potrei creare qualcosa di simile che funzioni e sia dinamico, non importa se aggiungo una nuova sequenza di comandi della combinazione di frasi?