Come Leon dice nel suo commento, commentando fuori NSParameterAssert
non è una soluzione ideale. Un'asserzione è stata messa lì per un motivo dall'autore di AFNetworking
. È probabile che il codice che non passa l'asserzione sia causato da un URL non valido.
Ricordare che i metodi di produzione NSURL
(ovvero + URLWithString:
e i relativi fratelli) restituiscono nil
quando vengono passati una stringa di URL non valida. In questo contesto, una stringa non valida è una stringa che contiene un URL non valido.
Quello che dovresti fare invece di commentare la nostra asserzione, è assicurarti che non stia passando nessun URL non valido all'istanza AFHTTPClient
. This Stackoverflow answers fornisce un esempio di come è possibile convalidare un URL. Ecco un esempio dalla risposta:
- (BOOL)validateUrl:(NSString *)candidate {
NSString *urlRegEx = @"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+";
NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx];
return [urlTest evaluateWithObject:candidate];
}
In alternativa, si potrebbe aggiungere fughe percentuale utilizzando NSString
s' stringByAddingPercentEscapesUsingEncoding
metodo. Come questo:
NSString *encoded = [notEncoded stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
fonte
2014-02-07 11:05:27
Ora sto lottando anche con questo problema. Hai già trovato una soluzione? – Leon
ho commentato la linea 227: // NSParameterAssert (url); E funziona .. – arlg
sarebbe d'aiuto se hai incluso il codice in cui il programma è erroring fuori. Ma, si dovrebbe verificare se si passa a zero nel parametro URL del tipo: '[[AFHTTPClient alloc] initWithBaseURL: nil]'. L'NSParameterAssert (url) è lì per evitare di inizializzare il client HTTP con un URL nullo. –