【发布时间】:2015-04-09 17:09:09
【问题描述】:
我在快速开发方面相当陌生。我的第一个项目几乎完成了,除了我无法异步下载图像。当我编译我的项目时,我没有看到我设置的 UIImage 占位符,所以我不完全确定发生了什么。我确信我的问题具有约束力。任何帮助将不胜感激
// Async Code
func parser(parser: NSXMLParser!, didStartElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!, attributes attributeDict: [NSObject : AnyObject]!) {
eName = elementName
if elementName == "item" {
postTitle = String()
postLink = String()
}
}
func parser(parser: NSXMLParser!, foundCharacters string: String!) {
let data = string.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
if (!data.isEmpty) {
if eName == "title" {
postTitle += data
} else if eName == "link" {
postLink += data
}
}
}
func parser(parser: NSXMLParser!, didEndElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!) {
if elementName == "item" {
let blogPost: BlogPost = BlogPost()
blogPost.postTitle = postTitle
blogPost.postLink = postLink
//blogPost.postImage = postImage
blogPosts.append(blogPost)
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return blogPosts.count
}
// Image View
func asyncLoadShotImage(imageView : UIImageView) {
let downloadQueue = dispatch_queue_create("com.iShots.processdownload", nil)
dispatch_async(downloadQueue) {
var data = NSData(contentsOfURL: NSURL(string: self.imageUrl)!)
var image : UIImage?
if data != nil {
self.imageData = data!
image = UIImage(data: data!)!
}
dispatch_async(dispatch_get_main_queue()) {
imageView.image = image
}
}
}
这是这样称呼的:
asyncLoadShotImage(cell.myImageLabel)
我项目中的一个单元格:
【问题讨论】:
-
我认为所有
NSXMLParser代码都与您手头的问题无关?如果是这样,也许你应该删除它。同样,didReceiveMemoryWarning似乎不相关。但是,您没有向我们展示的是您调用asyncLoadShotImage的位置(我假设您在cellForRowAtIndexPath或类似的地方进行此操作)。
标签: swift xml-parsing