not good but great

プログラミング、アート、映画・本の感想について書きます。

NSXMLParserを使う

rss取得をしてみようと思った。NSXMLParserというのを使うらしい。

・参考
http://eure.jp/blog/swift_rss_kim/
BlogReader App in Swift – Ravi Shankar

Qiitaの投稿を読む

下記のフィードを取得する
Swiftタグが付けられた新着記事 - Qiita

override func viewDidLoad() {
        super.viewDidLoad()
        
        let url : NSURL = NSURL(string: "http://qiita.com/tags/Swift/feed.atom")
        var parser : NSXMLParser = NSXMLParser(contentsOfURL: url)
        parser.delegate = self
        parser.parse()
}

titleタグを取得

func parser(parser: NSXMLParser!, didStartElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!, attributes attributeDict: NSDictionary!){
    eName = elementName
    
    if elementName == "title"{
        println("parse start")
        println("Element's name is \(elementName)")
        println("Element's attributes are \(attributeDict)")
        
        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 == "url"{
            postLink += data
        }
    }
}

foundCharactersという名前から文字列を見つける関数だと思う。titleタグ、urlタグがあればどんどん文字をつなげていく。

func parser(parser: NSXMLParser!, didEndElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!) {
        println("postTile" + postTitle)
        println("postLink" + postLink)
}

実行結果

http://qiita.com/moshisora/items/b8fd89dba1ce7d540b8b
TabbedApplicationを複数のstoryboardとコードによる画面遷移で実装する

上のようなフィードを読み込むと、

postLinkhttp://qiita.com/moshisora/items/b8fd89dba1ce7d540b8b
parse start
Element's name is title
Element's attributes are {
}
postTileTabbedApplicationを複数のstoryboardとコードによる画面遷移で実装する
postLink
postTileTabbedApplicationを複数のstoryboardとコードによる画面遷移で実装する
postLink
postTileTabbedApplicationを複数のstoryboardとコードによる画面遷移で実装する
postLink
postTileTabbedApplicationを複数のstoryboardとコードによる画面遷移で実装する
postLink
postTileTabbedApplicationを複数のstoryboardとコードによる画面遷移で実装する
postLink
postTileTabbedApplicationを複数のstoryboardとコードによる画面遷移で実装する
postLink
postTileTabbedApplicationを複数のstoryboardとコードによる画面遷移で実装する
postLink
postTileTabbedApplicationを複数のstoryboardとコードによる画面遷移で実装する
postLink
postTileTabbedApplicationを複数のstoryboardとコードによる画面遷移で実装する
postLink
postTileTabbedApplicationを複数のstoryboardとコードによる画面遷移で実装する

これが出力される。

postLink、postTileが繰り返されているので、これは直さないといけない笑。