Non riesco a vedere alcun problema con questa riga di codice. Perché non può analizzare?NSPredicate impossibile analizzare la stringa di formato
[NSPredicate predicateWithFormat:@"(username CONTAINS[cd] %[email protected]) || "
"(userId CONTAINS[cd] %[email protected]) || "
"(firstname CONTAINS[cd] %[email protected]) || "
"(lastname CONTAINS[cd] %[email protected])", searchString]"
Il registro non aiuta neanche.
terminazione app a causa di eccezione non identificata 'NSInvalidArgumentException', la ragione: 'Impossibile analizzare la stringa di formato "(nome utente contiene [CD]% 1 $ @) || (userId CONTIENE [cd]% 1 $ @) || (nome CONTIENE [cd]% 1 $ @) || (cognome CONTIENE [CD]% 1 $ @) "'
Modifica 1:
Va bene, sembra come predicateWithFormat non capisce "% 1 $ @". Lo cambio a
[... predicateWithFormat:[NSString stringWithFormat:...]] // (same format as above)
Ha superato la linea. Ma, il problema successivo è:
self.filteredUserList = [self.userList filteredArrayUsingPredicate:predicate];
terminazione app a causa di eccezione non identificata 'NSUnknownKeyException', motivo: '[valueForUndefinedKey:]: l'utente entità è value non chiave di codifica-compliant per la chiave " un".'
"a" è la parola chiave che ho inserito nel searchTextBox. WUT?
ho stampato il predicato nella console di debug, sembra niente di sbagliato:
username CONTAINS[cd] a OR userId CONTAINS[cd] a OR firstname CONTAINS[cd] a OR lastname CONTAINS[cd] a
Edit 2:
Ok, problema risolto con questo super codice brutto:
[NSPredicate predicateWithFormat:@"(username CONTAINS[cd] %@) || "
"(userId CONTAINS[cd] %@) || "
"(firstname CONTAINS[cd] %@) || "
"(lastname CONTAINS[cd] %@)", searchString, searchString, searchString, searchString];
Cosa succede se voglio espandere il campo di ricerca in futuro? Devo aggiungere altri parametri? altro ", searchString, searchString, searchString"?
risolto
Grazie a Ewan e Bannings, dando 2 opzioni per la mia domanda. Li ho testati entrambi e hanno funzionato a liek con un certo fascino. Qualcuno può spiegare il diverso tra questi due, e in tal caso dovrei usare quale opzione?
** NOTA ** risposta
Bannings' va bene, fino a quando la mia stringa di ricerca contiene un apice singolo '
, quindi l'incidente app. Quindi penso che usare quello di Ewan sia meglio.
Funziona perfettamente! Questo è quello di cui ho bisogno. Grazie – Eddie