正如 Leon 在评论中所说,注释掉NSParameterAssert
并不是一个理想的解决方案。的作者提出了一个断言是有原因的AFNetworking
。没有通过断言的代码很可能是由无效的 URL 引起的。
请记住,NSURL
工厂方法(即+ URLWithString:
及其同级方法)将nil
在传递无效 URL 字符串时返回。在这种情况下,无效字符串是包含无效 URL 的字符串。
您应该做的而不是评论我们的断言,而是确保您没有将任何无效的 URL 传递给您的AFHTTPClient
实例。这个 Stackoverflow 答案提供了一个如何验证 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];