메뉴 건너뛰기

app

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

lispro062015.05.15 11:26조회 수 3185댓글 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 조회 1676
lispro06
2015.05.15 조회 1650
lispro06
2015.05.15 조회 2541
lispro06
2014.08.16 조회 1793
lispro06
2014.02.08 조회 4053
lispro06
2013.12.11 조회 1712
lispro06
2013.12.10 조회 3015
suritam9
2013.12.06 조회 2295
suritam9
2013.12.02 조회 3483
suritam9
2013.11.30 조회 2188
suritam9
2013.11.26 조회 1684
suritam9
2013.08.23 조회 7348
suritam9
2013.08.23 조회 1891
suritam9
2013.06.28 조회 2368
첨부 (0)
위로