嗨,我想嘗試一個簡單的練習。我做了這個基本的XML閱讀器,它工作正常,但我很想改善它,並擔心異步加載。我應該怎麼做?swift xml rss reader ...讓它異步
import UIKit
class ViewController: UITableViewController, NSXMLParserDelegate, UITableViewDelegate {
let urlstring = "http://www.nasa.gov/rss/dyn/breaking_news.rss"
var element:NSString = ""
var items:[String] = []
var item = ""
override func viewDidLoad() {
super.viewDidLoad()
// dispatch_queue_t myQueue = dispatch_queue_create("queue",NULL)
loadParser()
}
//MARK - tableviewdelegate
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell
cell.textLabel.text = items[indexPath.row]
return cell
}
//MARK - parser
func loadParser(){
let url = NSURL(string: urlstring)
var parser = NSXMLParser(contentsOfURL: url)
parser?.delegate = self
parser?.shouldProcessNamespaces = true
parser?.shouldReportNamespacePrefixes = true
parser?.shouldResolveExternalEntities = true
parser?.parse()
}
//MARK: - Parser Delegate
func parser(parser: NSXMLParser!, didStartElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!, attributes attributeDict: [NSObject : AnyObject]!) {
element = elementName
if ((elementName as NSString).isEqualToString("item")){
item = ""
}
}
func parser(parser: NSXMLParser!, didEndElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!) {
if ((elementName as NSString).isEqualToString("item")){
items.append(item)
}
}
func parser(parser: NSXMLParser!, foundCharacters string: String!) {
if ((element.isEqualToString("title")) && (element != "")){
item += string
}
}
func parserDidEndDocument(parser: NSXMLParser!) {
println(items)
self.tableView.reloadData()
}
}
我不知道該怎麼做。我試圖將「loadParser」包裝在一個調度隊列中,但在swift中它不起作用。你們可以告訴我如何使用GCD來做到這一點嗎?感謝
你是什麼意思不工作?你嘗試了什麼?結果是什麼? – Abizern 2014-10-30 19:46:11