gpt4 book ai didi

ios - 如何从 xml 提要上传 ios rss 提要表格单元格的缩略图

转载 作者:行者123 更新时间:2023-11-28 21:40:57 25 4
gpt4 key购买 nike

我为工作需要创建的 rss 应用程序即将完成。我对 xcode 还是很陌生,我已经尝试了很多不同的开源代码。我终于找到了一个更适合我需要的,但我最不需要的是让缩略图图像适用于表格 View 单元格。单元格中的文章标题和描述加载正常,但当我尝试重新编写图像代码时,它出现空白。

该项目是为了与谷歌新闻 rss 一起工作:https://news.google.com/?output=rss .我使用的 rss 是:http://www3.westchestergov.com/home/all-press-releases?format=feed&type=rss

现在,我认为处理表格 View 单元格图像下载的代码部分是:

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell
let newsItem = RSSdataList[indexPath.row]
cell.imageView?.image != nil
cell.textLabel?.text = newsItem.title
cell.detailTextLabel?.text = newsItem.summary

// Use cached image or download new image for the cell
if let imgURLString = newsItem.imgURL, let cachedImage = imagesCache[imgURLString] {
cell.imageView?.image = cachedImage

} else if let imgURLString = newsItem.imgURL {

// Need to set a blank image to the imageView to show the downloaded image
let blank = UIImage(named: "Blank.jpg")
var tempImage = CGImageCreateWithImageInRect(blank?.CGImage!, CGRect(x: 0, y: 0, width: 80, height: 80))
cell.imageView?.image = UIImage(CGImage: tempImage)

dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0)) {
var downloadedImg = UIImage()

if let imgURL = NSURL(string: imgURLString), let imgData = NSData(contentsOfURL: imgURL), let img = UIImage(data: imgData) {
downloadedImg = img
} else {
println("Error while downloading img")
}

dispatch_async(dispatch_get_main_queue()) {
if let cellToUpdate = tableView.cellForRowAtIndexPath(indexPath) {
cellToUpdate.imageView?.image = downloadedImg
}
}
}
}

return cell
}

对于谷歌 rss,这工作正常,当我搜索他们的 rss 的代码时,我看到他们的图像存储为:

img src="//t3.gstatic.com/images?q=tbn:ANd9GcSHnlu8OJiZBnM5ggUNjTe5ZwBwYWEN_xVjwglmYgUDZOdJSAc5s62-gAgTXTTu4sI8bVRc6W1k" alt="" 

对于我使用的 rss,图像存储为:

<img style="border: 1px solid #cccccc; margin-bottom: 2px; margin-left: 10px; float: right;" src="http://www3.westchestergov.com/images/stories/newsPrimary2015/ferc-logo.jpg" alt="ferc-logo" width="333" height="222" 

任何人都可以阐明我如何能够更改周围的代码,以便它可以与我正在使用的 rss 提要一起工作吗?这是我的最后一 block 拼图,如果我能让它工作,我终于可以把这个应用程序抛在脑后了。

此外,如果有帮助,我的 NewsItem.swift 类中也有这段代码也处理图像:

    private func updateDescriptionHTMLImgURL() {
descriptionHTML = descriptionHTML.stringByReplacingOccurrencesOfString("<img style=", withString: "src=http://")
}

提前致谢

最佳答案

以下代码段将使用正则表达式从字符串中提取任何 url。

var str = // your rss image string
let regex = NSRegularExpression(pattern: "(http://)(.*?)(?=\")", options: NSRegularExpressionOptions.allZeros, error: nil)

var urlString = ""
if let result = regex?.firstMatchInString(str, options: .allZeros, range: NSMakeRange(0, count(str))) {
urlString = (str as NSString).substringWithRange(result.range)
}

println(urlString) // will print: http://www3.westchestergov.com/images/stories/newsPrimary2015/ferc-logo.jpg

编辑:如何实现

我建议创建一个函数来进行转换。像这样:

func convertRSSImageToURL(rssImage: String) -> NSURL? {
let regex = NSRegularExpression(pattern: "(http://)(.*?)(?=\")", options: NSRegularExpressionOptions.allZeros, error: nil)

if let result = regex?.firstMatchInString(rssImage, options: .allZeros, range: NSMakeRange(0, count(rssImage))) {
return NSURL(string: (rssImage as NSString).substringWithRange(result.range))
} else {
return nil
}
}

然后您可以轻松地将它添加到您的代码中,如下所示:

换行

} else if let imgURLString = newsItem.imgURL {

} else if let imgURL = convertRSSImageToURL(newsItem.imgURL) {

然后只删除行:

let imgURL = NSURL(string: imgURLString), 

因为你已经有一个未包装的 NSURL

旁注:这没有经过测试,但它应该足以让您自己实现它

关于ios - 如何从 xml 提要上传 ios rss 提要表格单元格的缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32097651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com