stringByAddingPercentEscapesUsingEncoding在9.0版本中已经被弃用。如何替代它?

33

我是一名初级开发者,我得到了这段代码:

(NSString *)encodedStringFromObject:(id)object {
    return [[object description] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];    
}

但在9.0版本中必须使用stringByAddingPercentEncodingWithAllowedCharacters

我该如何转换这段代码? 我需要帮助,谢谢!


在iOS9中,stringByAddingPercentEscapesUsingEncoding已被stringByAddingPercentEncodingWithAllowedCharacters:所取代。 - Jiri Zachar
5个回答

84

如果你只想看一个快速的例子,请查看以下代码:

NSString * encodedString = [@"string to encode" stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]];

还要检查预定义字符集列表

如果您想要解释,请阅读文档,或至少阅读此主题:如何在Swift中编码URL


是的,我使用了您的示例将我的代码转移过来。返回[[object description] stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]];然后它就可以工作了,非常感谢! - Just Lai
关于如何标记它,我不太清楚...这是我第一次使用Stack Overflow,是否点击接受按钮? - Just Lai
1
@JustLai谢谢,我看到你找到了方法,我也建议你花点时间参观一下(在右上角搜索帮助->导览)。祝你在StackOverflow上问题解决顺利。 - sage444
谢谢您的建议,对我很有帮助! - Just Lai

4
URL = [[NSString stringWithFormat:@"%@XYZ",API_PATH]stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

3

您需要阅读两个函数的规范。然后,您需要找出用于替换字符的转义序列的目的。从那里,您将找到允许使用的字符集,这些字符集必须在某处有所记录。

这是从初级开发人员变为普通开发人员再到高级开发人员的基本部分:确切地了解您的代码应该做什么,并在此基础上使其实现其应该完成的任务。

stringByAddingPercentEscapesUsingEncoding可能已经过时,因为它不知道哪些字符是允许的,有时会给出错误的结果。


2
您可以使用stringByRemovingPercentEncoding代替stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding [@"字符串" stringByRemovingPercentEncoding];

0

这里是用Swift的解决方案

var encodedString = "Hello, playground".addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接