【发布时间】:2016-10-19 00:32:12
【问题描述】:
帮助!总斯威夫特新手! 我想我已经很接近了,但我的非经验让我退缩了..
我怎样才能使这条线变成像上面那样的数组?
// NEED HELP HERE~!
cell.itemImageView.setImageWithURL(NSURL(string: mediaURL)!, placeholderImage: UIImage(named: "placeholder"))
请原谅我截断的代码;太乱了,无法完全粘贴。
class FeedTableViewController: UITableViewController, NSXMLParserDelegate, MWFeedParserDelegate, SideBarDelegate {
var feedItems = [MWFeedItem]()
// xml parser
var myParser: NSXMLParser = NSXMLParser()
// rss records
var rssRecordList : [RssRecord] = [RssRecord]()
var rssRecord : RssRecord?
// original var before adding media
// var isTagFound = [ "item": false , "title":false, "pubDate": false ,"link":false]
var isTagFound = [ "item": false , "title":false, "pubDate": false , "media": false , "link":false]
var mediaURL = ""
////SNIP MESSY CODE
//return the number of rows
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.rssRecordList.count
return feedItems.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! FeedTableViewCell
let item = feedItems[indexPath.row] as MWFeedItem?
cell.itemTitleLabel.text = item?.title
let thisRecord : RssRecord = self.rssRecordList[indexPath.row]
cell.itemDateLabel.text = thisRecord.pubDate
// NEED HELP HERE~!
cell.itemImageView.setImageWithURL(NSURL(string: mediaURL)!, placeholderImage: UIImage(named: "placeholder"))
print("print check for URL",mediaURL)
////SNIP MESSY CODE
func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {
if elementName == "item" {
mediaURL = ""
self.isTagFound["item"] = true
self.rssRecord = RssRecord()
}else if elementName == "title" {
self.isTagFound["title"] = true
}else if elementName == "pubDate" {
self.isTagFound["pubDate"] = true
}else if elementName == "media:thumbnail" {
self.mediaURL = attributeDict["url"]!
}
}
当我“打印(mediaURL)”时,我可以从 RSS 中看到最后一个“media:thumbnail”资产的 URL,所以知道我很接近了。 如果有人可以提供帮助,我敢肯定这是一个语法问题!
提前感谢您,感谢迈克尔提出的好问题。
为了回答 Michael,我在 NSXMLParser 中添加了设置“mediaURL”的部分以及我在顶部调用的类。
此外,正如他所质疑的那样,我正在尝试从数组中读取“mediaURL”。 该数组将是包含“media:thumbnail”URL 值的 RSS 提要的行。
再次道歉,这是如此切碎。你可以看到我已经将它与我在这里找到的 MWFeedParserDelegate 和 NSXMLParserDelegate 代码一起修补了。
再次感谢您!
~~~更新~~~ 所以对 Swift 和 Objective-C 来说太陌生了,我无法理解如何工作。然而,我确实找到了一个不同的例子,看起来它符合 Himanshu 想说的:
func loadImageSynchronouslyFromURLString(_ urlString: String) -> UIImage? {
if let url = URL(string: urlString) {
let request = NSMutableURLRequest(url: url)
request.timeoutInterval = 30.0
var response: URLResponse?
let error: NSErrorPointer? = nil
var data: Data?
do {
data = try NSURLConnection.sendSynchronousRequest(request as URLRequest, returning: &response)
} catch let error1 as NSError {
error??.pointee = error1
data = nil
}
if (data != nil) {
return UIImage(data: data!)
}
}
return nil
}
希望其他人可以从中受益..
【问题讨论】:
-
这个问题需要更多细节:
mediaURL来自哪里?我在您的代码 sn-p 的其他任何地方都看不到它。另外,您想将什么放入数组中?您是否试图读取数组的 out 内容(例如mediaURL)?哪个数组? -
更新以尝试更好地理解 Michael Dautermann 的好问题!
-
@swiftnewb 检查我的答案
-
谢谢Himanshu,但是作为一个新手,我无法正确地使用它。最后,我升级到 xcode 8,并找到了一个不同的示例。作为参考,我在原始图像下方添加了新图像调用。