메뉴 건너뛰기

app

[SWIFT] XML parsing 후 테이블 뷰에 표현

lispro062015.05.15 11:26조회 수 3298댓글 0

    • 글자 크기

http://www.theappguruz.com/tutorial/xml-parsing-using-nsxmlparse-swift/


위 사이트를 참고했는데, 코드가 여러모로 안 맞아, 지금 시간 까지 하고 있다.


여러 사이트를 뒤지다가 elementName 이 안 맞는 것을 찾아내어 강제 매핑 시켰다.


Table View Cell 에서 Identifier 도 Cell로 지정해 줘야 한다.


//

//  bbsTableViewController.swift

//  SidebarMenu

//

//  Created by YeongSik Pak on 2015. 4. 11..

//  Copyright (c) 2015년 AppCoda. All rights reserved.

//


import UIKit


class bbsTableViewController: UITableViewController, NSXMLParserDelegate {

    

    var strXMLData:String = ""

    var currentElement:String = ""

    var passData:Bool=false

    var passName:Bool=false

    var parser = NSXMLParser()

    var posts = NSMutableArray()

    var elements = NSMutableDictionary()

    var element = NSString()

    var title1 = NSMutableString()

    var date = NSMutableString()

    

    @IBOutlet weak var menuButton: UIBarButtonItem!

    

    override func viewDidLoad() {

        super.viewDidLoad()

        

        if self.revealViewController() != nil {

            menuButton.target = self.revealViewController()

            menuButton.action = "revealToggle:"

            

            self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())

            

            // Uncomment to change the width of menu

            //self.revealViewController().rearViewRevealWidth = 62

        }

        var url:String="http://blog.rss.naver.com/suritam9.xml"

        var urlToSend: NSURL = NSURL(string: url)!

        // Parse the XML


        posts = []

        parser = NSXMLParser(contentsOfURL: urlToSend)!

        parser.delegate = self

        parser.parse()


    }

    func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [NSObject : AnyObject]) {

        self.currentElement = elementName

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

        {

            elements = NSMutableDictionary.alloc()

            elements = [:]

            title1 = NSMutableString.alloc()

            title1 = ""

            date = NSMutableString.alloc()

            date = ""

        }

    }

    

    func parser(parser: NSXMLParser, foundCharacters string: String?)

    {

        println(currentElement)

        if currentElement == "title" {

            title1.appendString(string!)

        } else if currentElement == "link" {

            date.appendString(string!)

        }

    }

    

    func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?)

    {

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

            if !title1.isEqual(nil) {

                elements.setObject(title1, forKey: "title")

            }

            if !date.isEqual(nil) {

                elements.setObject(date, forKey: "link")

            }

            posts.addObject(elements)

        }

    }

    

    func parser(parser: NSXMLParser, parseErrorOccurred parseError: NSError) {

        NSLog("failure error: %@", parseError)

    }


    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }

    

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int

    {

        return posts.count

    }

    

    

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! BbsTableViewCell

        

        cell.TitleLabel.text = posts.objectAtIndex(indexPath.row).valueForKey("title") as! NSString as String

        cell.DetailLabel.text = posts.objectAtIndex(indexPath.row).valueForKey("link") as! NSString as String

        

        return cell as BbsTableViewCell

    }




}

lispro06 (비회원)
    • 글자 크기
[SWIFT] File upload in gallery (by lispro06) [SWIFT] 아이콘 뱃지(숫자) 표시 (by lispro06)

댓글 달기

lispro06
2015.05.15 조회 1856
lispro06
2015.05.15 조회 1811
lispro06
2015.05.15 조회 2690
lispro06
2014.08.16 조회 1952
lispro06
2014.02.08 조회 4303
lispro06
2013.12.11 조회 1945
lispro06
2013.12.10 조회 3203
suritam9
2013.12.06 조회 2473
suritam9
2013.12.02 조회 3732
suritam9
2013.11.30 조회 2339
suritam9
2013.11.26 조회 1862
suritam9
2013.08.23 조회 7545
suritam9
2013.08.23 조회 2068
suritam9
2013.06.28 조회 2557
첨부 (0)
위로