在这个项目中,我试图在我的应用程序中显示网页的一部分(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("°", withString: " °")
print(weatherArrayWithDeg[0])
}
}
}
task.resume()
答案 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° outside"
print("weather: \(weather.convertFromHTML())")
请注意,您现在可以针对任何需要转换的HTML解决您在应用的任何部分中的任何字符串上的问题。这很酷。