【问题标题】:Create NSURL with string containing "^" character gives a nil使用包含“^”字符的字符串创建 NSURL 给出一个 nil
【发布时间】:2016-04-22 03:01:33
【问题描述】:

当我尝试使用包含“^”字符的String 创建NSURL 时,应用程序崩溃并且控制台显示:

fatal error: unexpectedly found nil while unwrapping an Optional value

以前有人遇到过吗?

编辑:

似乎 NSURL 初始化程序提供了一个 nil 对象,并且在尝试强制展开它时应用程序崩溃了。

我怎样才能避免使用包含此类字符的字符串获取这个 nil NSURL 实例?

编辑

这里有一些代码,澄清一下:

let searchMethod = "advancedsearch.php?"
let searchParameters = "q=title:Book^100%20OR%20description:Book^15%20OR%20collection:Book^10%20OR%20language:Book^10%20OR%20text:Book^1&mediatype:texts+AND+NOT+hidden:true+AND+collection:texts&sort%5B%5D=titleSorter+asc&rows=10&output=json&start=1"
NSURL(string:"\(baseURL)/\(searchMethod)\(searchParameters)")
print("url \(url)")

NSURL 为 nil,控制台给出:

url nil

【问题讨论】:

标签: ios string swift nsurl


【解决方案1】:

^”符号不允许用于 URL 编码。
快速使用这个:

let encodedURLString = urlString.stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet())

或者对于 Objective-C:

NSString *encodedURLString = [urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]];

【讨论】:

  • URL 的每个组件都有一个字符集,您应该将它们应用于各自的组件
猜你喜欢
  • 2011-02-17
  • 1970-01-01
  • 2013-05-16
  • 1970-01-01
  • 1970-01-01
  • 2014-11-24
  • 1970-01-01
  • 2018-10-16
  • 1970-01-01
相关资源
最近更新 更多