当前位置: 首页 > 面试题库 >

NSString编码在URL内容上返回nil

东郭鸿福
2023-03-14
问题内容

我正在关注有关Udemy的iOS Swift指南,这是我无法解决的第一个问题:

我应该看到html等打印到控制台,但是我得到了null。

这是本节:

    let url = NSURL(string: "https://google.com")
    let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {
        (data, response, error) in
        if error == nil {
            var urlContent = NSString(data: data!, encoding: NSUTF8StringEncoding)
            print(urlContent)
        }
    } 
    task.resume()

如果我只打印数据,那么它给了我一些内容,但是当它编码为零时。

有什么帮助吗?在解决此问题之前,无法移动到下一部分。


问题答案:

rmaddy已经提到的问题是您使用的编码。您需要使用NSASCIIStringEncoding

if let url = URL(string: "https://www.google.com") {
    URLSession.shared.dataTask(with: url) {
        data, response, error in
        guard
            let httpURLResponse = response as? HTTPURLResponse, httpURLResponse.statusCode == 200,
            let data = data, error == nil,
            let urlContent = String(data: data, encoding: .ascii)
        else { return }
        print(urlContent)
    }.resume()
}

或从Martin R中获取线索,您可以从响应中检测字符串编码:

extension String {
    var textEncodingToStringEncoding: Encoding {
        return Encoding(rawValue: CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding(self as CFString)))
    }
}
if let url = URL(string: "https://www.google.com") {
    URLSession.shared.dataTask(with: url) {
        data, response, error in
        guard
            let httpURLResponse = response as? HTTPURLResponse, httpURLResponse.statusCode == 200,
            let data = data, error == nil,
            let textEncoding = response?.textEncodingName,
            let urlContent = String(data: data, encoding: textEncoding.textEncodingToStringEncoding)
            else { return }
        print(urlContent)
    }.resume()
}


 类似资料:
  • 本文向大家介绍如何在iPhone中对字符串(NSString)进行URL编码?,包括了如何在iPhone中对字符串(NSString)进行URL编码?的使用技巧和注意事项,需要的朋友参考一下 在开发基于API的Web应用程序时,我们绝对需要与多个Web服务和URL相交。网址可能包含特殊字符,搜索字词,查询,标题和许多其他内容,具体取决于我们所需的服务。这就是为什么我们需要某种编码,以便我们创建的U

  • 问题内容: 我想我在这里遗漏了一些东西: 使用AjAX,我从数据库中获取了一些数据,并以JSON格式将其发送回去。$ jsondata = array(); 到目前为止,我认为没有问题。 在回教士方面,我将以上内容接收回 如果我这样做 我看到了我希望看到的内容,即警报中的整个阵列。 一切出错的地方就是尝试访问响应。我得到的错误是“ categoriesObject”不是对象- 如果不是,它是什么?

  • 我想知道什么是url编码。我有2个jsp页面和一个servlet。当我运行应用程序时,显示的网址是: 哪里 指数jsp: 单击“提交”按钮后,显示的URL为: URL编码的含义是什么?如何对url进行编码? 从转到然后转到 Myservet#doPost//我需要在这里进行URL编码吗?如果是,怎么做? result.jsp

  • 我有一个像这样的mysql表 但是我无法用这个函数检索“成人”和“儿童”的值 错误日志显示变量被正确地传递给函数: 为什么此函数返回?

  • TestCase 2: baseChars:['a','b'] 所需字符串长度:1 产出: 有人能帮忙吗?我已经把我的代码放在GitHub里了。如果您可以将我的实现更改为非递归,但保留函数返回类型,也将受到重视。

  • 我使用的是DocuSign C#客户端库。 为了获得签名URL,我使用函数(https://developers.docusign.com/esign-rest-api/reference/envelopes/envelopeViews/createRecipient)。