메뉴 건너뛰기

app

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

lispro062015.05.15 11:26조회 수 3143댓글 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: UITableViewControllerNSXMLParserDelegate {

    

    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) asBbsTableViewCell

        

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

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

        

        return cell as BbsTableViewCell

    }




}

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

댓글 달기

lispro06
2015.05.15 조회 1636
lispro06
2015.05.15 조회 1604
lispro06
2015.05.15 조회 2500
lispro06
2014.08.16 조회 1745
lispro06
2014.02.08 조회 3992
lispro06
2013.12.11 조회 1652
lispro06
2013.12.10 조회 2963
suritam9
2013.12.06 조회 2254
suritam9
2013.12.02 조회 3438
suritam9
2013.11.30 조회 2142
suritam9
2013.11.26 조회 1628
suritam9
2013.08.23 조회 7294
suritam9
2013.08.23 조회 1829
suritam9
2013.06.28 조회 2319
첨부 (0)
위로