隐含转换' NSStringEncoding' (又名' unsigned long')到' NSCharacterSet * _Nonnull' ARC不允许这样做

时间:2017-11-03 04:39:49

标签: ios objective-c nscharacterset

关注以下代码我收到错误消息:' NSStringEncoding'的隐式转换(又名' unsigned long')到' NSCharacterSet * _Nonnull'不允许使用ARC

我在哪里做错了?

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

1 个答案:

答案 0 :(得分:0)

您使用的是错误的方法。而不是使用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]];