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