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を含む文字列です。
アサーションにコメントする代わりにすべきことは、AFHTTPClient
インスタンスに無効なURLを渡していないことを確認することです。 この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];
私はこのエラーが発生しました、原因はURLの先頭のスペースでした:
http://Host.com/etc
^
kasperが言うように->「NSStringのstringByAddingPercentEscapesUsingEncodingメソッドを使用してパーセントエスケープを追加できます」
それはiOS 9で廃止されたので、以下を使用するか、より良い
path = [path stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
今日、私はこの主張で奇妙な事件を起こしました。私の問題は、他のテキストエディター(Sublime)からURLをコピーしたことでした。そのため、URLは無効でした。
何度かテストするまでは信じていませんでした。
その働きを願って.. AFnetworingクラス名AFURLRequestSerialization.m
commented the line 227 : // NSParameterAssert(url);