ARC 不允许将'NSStringEncoding'(也称为"无符号长")隐式转换为 'NSCharacterSet * _Nonnull'



在以下代码中,我收到错误消息:ARC不允许将"NSStringEncoding"(又名"无符号长")隐式转换为"NSCharacterSet * _Nonnull"

我哪里做错了?

NSURL *candidatesURL = [NSURL URLWithString:[str_url
                                             stringByAddingPercentEncodingWithAllowedCharacters:NSUTF8StringEncoding]];

您使用了错误的方法。不要使用stringByAddingPercentEncodingWithAllowedCharacters使用此stringByAddingPercentEscapesUsingEncoding

如果您不想使用此方法stringByAddingPercentEncodingWithAllowedCharacters则必须传递一组允许的字符。

试试这个。

NSURL *candidatesURL = [NSURL URLWithString:[str_url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

或者,如果您的应用开发目标是 IOS 9.0 及更高版本。

stringByAddingPercentEscapesUsingEncoding已弃用,因此您可以使用stringByAddingPercentEncodingWithAllowedCharacters并使用URLHostAllowedCharacterSet

NSURL *candidatesURL = [NSURL URLWithString:[str_url stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]];

最新更新