我需要获取所有以" .jpg"结尾的网址。我的代码:
func findPicUrl(url: NSURL){
var error: NSError?
var HTML = NSString(contentsOfURL: url, encoding: NSUTF8StringEncoding, error: &error)
var detector = NSDataDetector(types: NSTextCheckingType.Link.rawValue, error: nil)
var matches = detector!.matchesInString(HTML! as String, options: nil, range: NSMakeRange(0, HTML!.length))
for match in matches {
if (match as! NSString).containsString(".jpg"){
println(match)
}
}
}
它打印所有的网址没有" if statement "但是当我添加" if statement "我收到错误
"无法转换类型的值' NSLinkCheckingResult'到' NSString'" **。
如何解决?
答案 0 :(得分:2)
你必须从URL
双重打开NSLinkCheckingResult
属性,将其作为NSURL投射,然后你可以使用pathExtension
属性来查找" jpg"图片链接:
for match in matches {
if let temp = match.URL, matchURL = temp as NSURL! {
if matchURL.pathExtension == "jpg" {
println(matchURL.absoluteString!)
}
}
}
答案 1 :(得分:0)
替换您的for循环代码,如下所示。
for match in matches {
if match.rangeOfString(".jpg") != nil{
println("match")
}
}
答案 2 :(得分:0)
文档说:
NSTextCheckingResult是一个用于描述通过文本检查定位的项目的类。这些对象中的每一个都表示在分析文本块期间发现的请求文本内容。
例如,NSTextCheckingResult有一个range
属性,其中包含HTML
变量中匹配字符串的范围。
试试这个
var error: NSError?
if let HTML = NSString(contentsOfURL: NSURL(string:"http://macfix.de")!, encoding: NSUTF8StringEncoding, error: &error) {
let detector = NSDataDetector(types: NSTextCheckingType.Link.rawValue, error: nil)
let matches = detector!.matchesInString(HTML as String, options: nil, range: NSMakeRange(0, HTML.length))
for match in matches {
let HTMLmatch = (HTML as NSString).substringWithRange(match.range)
if HTMLmatch.rangeOfString("jpg") != nil {
println(HTMLmatch)
}
}
}