메뉴 건너뛰기

app

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

lispro062015.05.15 11:26조회 수 3138댓글 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 조회 1632
lispro06
2015.05.15 조회 1600
lispro06
2015.05.15 조회 2492
lispro06
2014.08.16 조회 1739
lispro06
2014.02.08 조회 3979
lispro06
2013.12.11 조회 1648
lispro06
2013.12.10 조회 2953
suritam9
2013.12.06 조회 2249
suritam9
2013.12.02 조회 3424
suritam9
2013.11.30 조회 2139
suritam9
2013.11.26 조회 1626
suritam9
2013.08.23 조회 7292
suritam9
2013.08.23 조회 1826
suritam9
2013.06.28 조회 2313
첨부 (0)
위로