XML parsing enclosure in Swift



I am trying to do exactly this Objective C code in Swift but it keeps returning a nil value and crashing. I am just trying to capture the url of an mp3 file so I can play it in my app.



- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
if ([elementName isEqualToString:@"enclosure"]) {
self.podcastURL = [attributeDict objectForKey:@"url"];
}
}


Here is my code



// End Parsing Function and load dictionary key with <title> <link> and <itunes:summary> elements
func parser(parser: NSXMLParser!, didEndElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!) {

if (elementName as NSString).isEqualToString("item") {

if ftitle != "" {
elements.setObject(ftitle, forKey: "title")
//println(ftitle) // Lookey Loo
}

if (link != "") {
elements.setObject(link, forKey: "link")
//println(link) // Lookey Loo
}


if (fdescription != "") {
elements.setObject(fdescription, forKey: "itunes:summary")
//println(fdescription) // Lookey Loo
}

if (mystream != "") {
elements.setObject(mystream, forKey: "enclosure")
//println(mystream) // Lookey Loo
}

feeds.addObject(elements)

}

}

// Append the text from the element to the dictionary key location
func parser(parser: NSXMLParser!, foundCharacters string: String!) {


if element.isEqualToString("title"){
ftitle.appendString(string)

}else if element.isEqualToString("link"){
link.appendString(string)

}else if element.isEqualToString("itunes:summary"){
fdescription.appendString(string)

}else if element.isEqualToString("enclosure"){
mystream.appendString(string)
println(mystream)
}

}

// Now reload all the data
func parserDidEndDocument(parser: NSXMLParser!) {
self.tableView.reloadData()

}

No comments:

Post a Comment