Ответ 1
Как говорит Леон в своем комментарии, комментирование NSParameterAssert
не является идеальным решением. Утверждение было поставлено по этой причине автором AFNetworking
. Код, не передающий утверждение, скорее всего, будет вызван неправильным URL.
Помните, что методы NSURL
factory (т.е. + URLWithString:
и его братья и сестры) возвращают nil
, когда им передается некорректная строка URL. В этом контексте недопустимая строка представляет собой строку, содержащую недопустимый URL.
Что вы должны сделать, а не комментировать наше утверждение, убедитесь, что вы не передаете какой-либо недопустимый URL-адрес вашему экземпляру AFHTTPClient
. fooobar.com/questions/71118/... дает пример того, как вы можете проверить URL-адрес. Вот образец ответа:
- (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];
}
В качестве альтернативы вы можете добавить процентные экраны с помощью метода NSString
stringByAddingPercentEscapesUsingEncoding
. Вот так:
NSString *encoded = [notEncoded stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];