2016-06-10 4 views
0

Ich versuche, Bild von RSS Feed mit MWFeedParser zu bekommen. Ich bekomme Feed-Elemente, aber als ich versuchte, das Bild zu erreichen, fehlt etwas in content Wert. Es muss da sein, aber es ist nicht so.MWFeedParser RSS Reader bekommt kein Bild

Also änderte ich den Inhalt Wert mit Link. Link ist wie folgt aus:

http://www.uefa.com/uefaeuro/news/newsid=2372826.html?rss=2372826+Italy\'s+\'BBC\'+spell+out+programme+for+solidity

Dann jetzt match Wert wird immer gleich Null. Ich habe nicht herausgefunden, was das Problem ist.

Das ist meine RSS-Feed-URL, was ich bin Gebrauch:

let url = NSURL(string: "feed://www.uefa.com/rssfeed/uefaeuro/rss.xml") 

Dies ist mein Code Bild von RSS-Feed zu erhalten:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("homeFeed", forIndexPath: indexPath) as! HomeFeedTableViewCell 

     cell.homeFeedImageView.image = UIImage(named: "placeholder") 

     let item = feedItem[indexPath.row] as MWFeedItem? 
     cell.homeFeedTextView.text = item?.title 

     if item?.link != nil{ 
      let htmlContent = item!.link as NSString 
      var imageSource = "" 

      let rangeOfString = NSMakeRange(0, htmlContent.length) 
      do{ 
      let regex = try NSRegularExpression(pattern: "<img.*?src=\"([^\"]*)\"", options: []) 

       if htmlContent.length > 0 { 
        let match = regex.firstMatchInString(htmlContent as String, options: [], range: rangeOfString) 
        if match != []{ 
         let imageUrl = htmlContent.substringWithRange((match!.rangeAtIndex(2))) as NSString 
         print(imageUrl) 

         if NSString(string: imageUrl.lowercaseString).rangeOfString("feedburner").location == NSNotFound{ 
          imageSource = imageUrl as String 
         } 
        } 

       } 

       if imageSource != ""{ 
        cell.homeFeedImageView.setImageWithURL(NSURL(string: imageSource)!, placeholderImage: UIImage(named: "placeholder")) 
       }else{ 
        cell.homeFeedImageView.image = UIImage(named: "placeholder") 
       } 
      } 
      catch let error as NSError{ 
       print(error.localizedDescription) 
      } 
     } 


     return cell 
    } 

Antwort

1

Versuche einstellen Bild mit URLRequest statt, wie unten dargestellt:

if imageSource != ""{ 
     let request = URLRequest(url: Foundation.URL(string: imageSource)!) 
     cell.imageView?.setImageWith(request, placeholderImage: nil, success: { [weak cell] request, response, image in 
     if cell != nil { 
      cell!.imageView!.image = image 
     } 

     if self.tableView.visibleCells._bridgeToObjectiveC().contains(cell!) { 
      self.tableView.reloadRows(at: [indexPath], with: .none) 
     } 
     }, failure:nil) 
} 

working screenshot of your RSS

Das Bild ist winzig im Screenshot, aber das liegt an meiner Imageview-Konfiguration. Ich nehme an, dass Ihre Bildansicht für ein größeres Bild konfiguriert ist.

Viel Glück!

*** Hinweis: Der obige Code ist für Swift 3.