【问题标题】:Implicit conversion of 'NSStringEncoding' (aka 'unsigned long') to 'NSCharacterSet * _Nonnull' is disallowed with ARCARC 不允许将“NSStringEncoding”(又名“unsigned long”)隐式转换为“NSCharacterSet * _Nonnull”
【发布时间】:2018-04-15 18:16:16
【问题描述】:

在以下代码中,我收到错误消息:ARC 不允许将“NSStringEncoding”(又名“unsigned long”)隐式转换为“NSCharacterSet * _Nonnull”

我哪里做错了?

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

【问题讨论】:

    标签: ios objective-c nscharacterset


    【解决方案1】:

    您使用了错误的方法。而不是使用stringByAddingPercentEncodingWithAllowedCharacters 使用这个stringByAddingPercentEscapesUsingEncoding

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

    试试这个。

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

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

    stringByAddingPercentEscapesUsingEncoding 已弃用,因此您可以使用stringByAddingPercentEncodingWithAllowedCharactersURLHostAllowedCharacterSet

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

    【讨论】:

    • 但是当我使用该方法时,会警告这是不推荐使用的方法
    • 已弃用。看看这个链接:stackoverflow.com/questions/32242712/…
    • @BhumiNandola 是的,它已被弃用,但 stringByAddingPercentEncodingWithAllowedCharacters 可用于 IOS9 及更高版本。查看更新的答案。
    猜你喜欢
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多