我刚刚在ios7上尝试过AFNetworking,我得到这个错误:
/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
我不知道发生了什么,lib是一个ios7的问题?
谢谢.
解决方法
正如Leon在评论中所说,评论NSParameterAssert不是一个理想的解决方案. AFNetworking的作者认为这是一个断言.不传递断言的代码可能是由无效的URL引起的.
请记住,NSURL工厂方法(即URLWithString:及其兄弟姐妹)在传递无效的URL字符串时将返回nil.在这种情况下,无效的字符串是包含无效URL的字符串.
您应该做什么而不是评论我们的断言,确保您没有将任何无效的URL传递到您的AFHTTPClient实例. This Stackoverflow answers给出了如何验证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];