麻烦使用NSString方法,swift

时间:2016-10-28 18:59:42

标签: swift nsstring

在这个项目中,我试图在我的应用程序中显示网页的一部分(weather-forecast.com)。我已经将html内容下载到'webContent'并使用componentsSeparatedByString将html代码分解为一个字符串数组,然后获取我想要的应用程序索引。这部分位于'websiteArray 1',这个值是一个字符串“非常温和(周六下午最高17°C,周五晚上8°C)。风力增加(周五晚上平静,太阳之夜来自ESE的新风。“ 它包含& deg而不是符号°,我试图使用stringByReplacingOccurrencesOfString来替换& deg with°。我得到的是,这个方法不能在字符串上调用但只能调用NSString,所以我尝试将我的字符串转换为NSString,但现在我收到错误“[String]不能转换为NSString”。

有人能指出我如何转换为NSString数组或使用stringByReplacingOccurrenceOfString方法的另一种方法吗?

let url = NSURL(string: "http://www.weather-forecast.com/locations/London/forecasts/latest")!

        let task = NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) -> Void in

            if let urlContent = data {

                let webContent = NSString(data: urlContent, encoding: NSUTF8StringEncoding)

                let websiteArray = webContent?.componentsSeparatedByString("3 Day Weather Forecast Summary:</b><span class=\"read-more-small\"><span class=\"read-more-content\"> <span class=\"phrase\">")



                if websiteArray?.count > 0{
                    //print(websiteArray![1])
                    var weatherArrayWithDeg = websiteArray![1].componentsSeparatedByString("</span>")

                    // Need to convert to NSString to use stringByReplacingOccurenceOfString, want to separate '$deg;' for ' °'
                    let weatherArray = (weatherArrayWithDeg as NSString).stringByReplacingOccurrencesOfString("&deg;", withString: " °")

                    print(weatherArrayWithDeg[0])
                }

            }
        }

        task.resume()

enter image description here

1 个答案:

答案 0 :(得分:0)

我会选择解决您的问题,而不是您的问题:

添加为扩展程序:

extension String {

    func convertFromHTML() -> String? {

        if let htmldata = self.data(using: String.Encoding.utf8), let attributedString = try? NSAttributedString(data: htmldata, options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], documentAttributes: nil) {
            return attributedString.string
        }

        return nil
    }
}

用法:

let weather = "its 70&deg; outside"
print("weather: \(weather.convertFromHTML())")

请注意,您现在可以针对任何需要转换的HTML解决您在应用的任何部分中的任何字符串上的问题。这很酷。