我刚刚在ios7上尝试了AFNetwork,但出现此错误:
/Classes/AFHTTPClient.m:227
2013-09-16 18:25:57.557 App[13531:a0b] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: url
我不知道发生了什么,ios7的lib有问题吗?谢谢。
正如Leon在他的评论中所说,注释掉NSParameterAssert
并不是一个理想的解决方案。AFNetworking
的作者出于某种原因提出了一个断言。未传递断言的代码可能是由无效的 URL 引起的。
请记住,NSURL
工厂方法(即 + URLWithString:
及其同级)在传递无效 URL 字符串时将返回 nil
。在此上下文中,无效字符串是包含无效 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];
我刚刚遇到了这个错误,原因是网址开头有一个空格:
http://host.com/etc
^
正如Kasper所说 --> "您可以使用NSString的stringByAddingPercentEscapesUsingEncode方法添加百分比转义"
或者更好地使用以下方法,因为它在iOS 9中已弃用
path = [path stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
我今天有一个奇怪的案例。我的问题是我从其他文本编辑器(崇高)复制了网址,这就是网址无效的原因。
直到我测试了几次,我才相信。
希望它能正常工作。In AFnetworing 类名 AFURLRequestSerialization.m
commented the line 227 : // NSParameterAssert(url);