Tuesday 15 July 2014

asynchronous - swift xml rss reader... make it async -



asynchronous - swift xml rss reader... make it async -

hi i'm trying work on simple exercise. made basic xml rss reader, works fine love improve , worry async loading. how should do?

import uikit class viewcontroller: uitableviewcontroller, nsxmlparserdelegate, uitableviewdelegate { allow 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 { homecoming 1 } override func tableview(tableview: uitableview, numberofrowsinsection section: int) -> int { homecoming items.count } override func tableview(tableview: uitableview, cellforrowatindexpath indexpath: nsindexpath) -> uitableviewcell { allow cell = tableview.dequeuereusablecellwithidentifier("cell", forindexpath: indexpath) uitableviewcell cell.textlabel.text = items[indexpath.row] homecoming cell } //mark - parser func loadparser(){ allow 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 nsstring).isequaltostring("item")){ item = "" } } func parser(parser: nsxmlparser!, didendelement elementname: string!, namespaceuri: string!, qualifiedname qname: string!) { if ((elementname 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() } }

i not sure how do. i'm trying wrap "loadparser" in dispatch queue in swift it's not working. can guys tell me how using gcd ? thanks

what about:

dispatch_async(dispatch_get_global_queue(dispatch_queue_priority_default, 0), ^{ loadparser(); });

this should same original objective-c solution

swift asynchronous

No comments:

Post a Comment