메뉴 건너뛰기

app

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

lispro062015.05.15 11:26조회 수 3186댓글 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 조회 1677
lispro06
2015.05.15 조회 1650
lispro06
2015.05.15 조회 2543
lispro06
2014.08.16 조회 1794
lispro06
2014.02.08 조회 4054
lispro06
2013.12.11 조회 1715
lispro06
2013.12.10 조회 3017
suritam9
2013.12.06 조회 2296
suritam9
2013.12.02 조회 3485
suritam9
2013.11.30 조회 2189
suritam9
2013.11.26 조회 1687
suritam9
2013.08.23 조회 7350
suritam9
2013.08.23 조회 1893
suritam9
2013.06.28 조회 2371
첨부 (0)
위로