1년전쯤에 스모킹 카운터란 흡연횟수를 계산해주는 어플을 앱스토어에 올린적이 있습니다. 제가 만든 대부분 아이폰용 어플들이 다른 계정과 회사이름으로 올라가 제 계정을 사용해 보고 싶은 이유도 있고, 개인적으로 필요하기도 해서 재미삼아 만들어 올린 어플입니다.
거의 팔리지는 않지만 업그레이드도 재미삼아 드물지만 계속하고 있었습니다. 올해초 아이폰이 한국에 출시되면서 한글 어플리케이션들이 많이 나오는 것을 보면서 한글 로컬라이징을 해야겠다고 생각했습니다.
그동안 계속 생각만 하고 있다 저번주 토요일에 시간을 내서 한글화를 해봤습니다. 확실히 영어로 나오는 것보다 보기도 편하고 좋은 것 같더군요. 아직도 변경하고 싶은 부분이 많이 있지만 취미삼아 올리는 녀석이라 시간을 내기가 생각처럼 쉽지 않네요. 사실 그것보다는 게을러서 그런 것 같습니다.
몇일전 주문한 모토로이를 받아 조금 사용해 보았습니다. 넥서스원이면 모를까 모토로이는 전혀 구매할 의사가 없었지만 현재 진행하고 있는 안드로이드 프로젝트 때문에 어쩔 수 없이 구입했습니다. 이전에 테스트용으로 잠시 써본적이 있어 전혀 관심이 가지 않는 제품이었습니다. 하지만 개발할 때도 쓰겠지만 집사람 핸드폰으로 구입한 것이고 집사람은 DMB만 되면 되니 괜찮을 것 같고 당장은 선택의 여지가 없어 바로 예약판매시 신청했습니다.
휴대용 젠더/DMB 안테나, 크래들, USB, 헤드셋, 차량용 충전기 등 구성품은 푸짐했습니다. 특히 크래들과 차량용 충전기는 아주 괜찮은 것 같습니다.
아이폰을 사용할때와 비해서 반응속도도 느리고 정확하지 않으며 스크롤시 딱딱 끊기는 느낌이 있습니다. 넥서스원을 사용해본 분의 이야기를 들어보면 같은 안드로이드지만 전혀 다른 OS라는 생각이들정도로 차이가 많이나고 모토로이가 부족하다고 했습니다. 내장되어 있는 문자인식 어플리케이션으로 책표지의 안드로이드란 큰 글씨를 인식시켜 보았는데 안드로메다로 인식하더군요. 묘한 기분이 들었습니다.
그나저나 안드로이드 개발을 하면서 구형 맥북의 한계를 느끼게 되는 일이 종종 있네요. 이로인해 조만간 아이맥을 구입하지 않을까 하는 걱정이 드는데 현실이 될 것 같습니다.
얼마전 출판사에서 리뷰요청과 함께 책을 보내주어 아이폰과 안드로이드 관련 책을 받아 보았습니다. 마침 요즘 하고 있는 안드로이드 프로젝트 때문에 정신이 없어 이제서야 간단하게 나마 책에 대한 느낌을 올려 봅니다.
두권의 책은 일본서적을 번역한 것이라는 것과 초보자를 대상으로 하고 있다는 공통점을 가지고 있습니다. 안드로이드와 아이폰으로 나누어져 있다는 것만 제외하고는 편집상태도 그렇고 두책을 본 느낌은 거의 동일합니다. 이 두 책의 장점은 대상이 명확하다는 것입니다. 어느정도 익숙한 사람도 아닌 해당 플랫폼에 처음으로 입문하는 사람을 그 대상으로 하고 있습니다.
300페이지가 조금 넘어가는 부담없는 분량에 기본적으로 알아야할 내용들을 자세하게 설명하고 있습니다. 개발에 익숙하신 분들이면 하루 정도면 읽을 수있고 해당 플랫폼에서의 개발을 어느정도 이해하실 수 있습니다.
안드로이드 관련서적은 2개 정도 이미 가지고 있었습니다. 그 두책에 비해서 내용은 적지만 오히려 초반에 감을 익히기에는 이 책이 더 나았을 거란 생각이 들었습니다. 어차피 책은 처음에 개념만 익히는 것이고 실제 개발시에는 책보다는 대부분 관련 사이트의 레퍼런스를 많이 활용하게 됩니다.
내용은 쉽게 이해할 수 있도록 되어 있으나 오타들이 있는 것 같습니다. 100 페이지에 보면 아래와 같은 ImageView와 ImageButton의 속성을 정의하는 소스가 있습니다.
ImageView, ImageButton 두 위젯 모두 'android:src'로 리소스를 지정하는데 'android:text'로 잘 못 지정되어 있습니다. btn_start_big_on도 btn_star_big_on로 변경되어야 하고요. 그외에 111 페이지에 있는 소스에서도 아래와 같은 이상한 내용의 소스가 있습니다.
붉은 색의 갑자기 나타나 닫히지도 않은 태그들은 아마 편집시 잘 못들어 온 것 같습니다. 현재까지 본 이 오타들은 처음 보는 분들에게는 혼란을 줄 수 있을고, 초보자를 대상으로 한 책에서 이런 오류는 아쉬운 부분입니다. 이런 오타에도 불구하고 누군가 안드로이드 입문서를 물어 본다면 이 책을 추천하겠습니다.
이책 역시 처음 입문하는 분들을 대상으로 쉽고 친절하게 설명되어 있습니다. 광대한 범위를 다루고 있지는 않지만 아이폰 개발에 입문하기에 좋은 책으로 생각됩니다. 많은 이미지와 도표들이 있어 이해하기도 쉽습니다. 디자인적인 측면에서 읽기가 좀 불편하지 않나 하는 생각인데 이는 보는 사람들에게 따라 평가가 달라질 것 같습니다. 확인해 보니 원서와 같은 디자인인 것 같습니다.
위에서도 언급했듯이 두 책 다 제가 본 책중에선 가장 쉽게 초보자를 대상으로 잘 나온 책인 것 같습니다. 책은 아무래도 서점에서 직접 보고서 자신과 궁합이 맞는 것을 고르는 것이 가장 좋을 것 같습니다.
파이썬에서 사용할 수 있는 BeautifulSoup을 이용해 xml 데이터를 sqlite3 DB에 넣는 툴을 만들는 간단한 예입니다.
1. BeautifulSoup 다운로드 및 설치
필요한 파일은 BeautifulSoup 사이트에서 다운로드 받으실 수있습니다. 파이썬 버젼이 2.*이면 3.0* 버젼을 3.*이면 3.1* 버젼중 최신버젼을 다운로드 받습니다. 다운로드가 완료되면 압축을 풀고 터미널에서 아래와 같이 setup.py를 실행합니다.
>python ./setup.py install
2. BeautifulSoup 사용예 1) 셈플 xml 파일 (test.xml)
테스트를 위해 간단히 작성해본 XML 입니다.
해당 사이트에서 문서 페이지를 읽어 보시면 보다 세부적인 기능과 상세한 사용법을 확인하실 수 있습니다. 사용한 con_data.py외 test.xml은 압축하여 첨부하였습니다. 테스트 시에는 터미널에서 chmod +x ./con_data.py로 실행권한을 설정하셔야 합니다.
이전에 강덕진님으로 부터 받은 터칭 아이폰 SDK 3.0과 함께 요즘 아이폰 개발시에 잘 활용하고 있습니다. 두 책다 저자분들로 부터 받은 책들이라 뭐라 평가하기가 그렇지만 이 책은 교과서적인 느낌이 터칭 아이폰 SDK 3.0은 활용서적인 느낌이 드는 것 같습니다.
요즘 서점들을 가보면 컴퓨터 서적 베스트 코너에는 아이폰 개발 관련 서적들이 자리잡고 있습니다. Objective-C도 TIOBE Index에서도 이전에 확인해 보았을 때는 19위였는데 어느새 13위까지 올라가 있었습니다. 상승세로 봐서는 10위권 안으로 들어갈 날도 멀지 않아 보입니다.
애플의 앱스토어가 짧은 시간에 많은 Objective-C 사용자들을 만들어 낸 것 같습니다. 애플은 8비트 컴퓨터 이후로는 개발자들로부터 이렇게 많은 관심을 받아보는 것은 처음일 것 같습니다. 안드로이드나 다른 스토어들도 앱스토어처럼 활성화되어 개발자들에게 많은 기회가 주어졌으면 좋겠습니다.
오랫만에 블로그에 글을 올립니다. 그동안 심한 감기로 숨만 쉬고 살다가 이제서야 정신이 조금 돌아 왔습니다. 아플때는 꼭 관리 좀 해야겠다고 생각하다고 나아지면 또 똑같은 생활을 하게되네요.
몇일전엔 애플 아이폰 개발자 사이트에 들어 가보니 포럼도 보이지가 않고 뭔가가 조금 이상했습니다. 옆을 보니 제 계정 기간이 지났다고 연장신청을 하라는 메시지가 보였습니다. 시간이 어떻게 가는 건지 별로 하는 일없이 어느새 1년이 지나갔네요.
비용은 환율에 상관없이 작년과 동일한 것 같습니다. 처음 등록할때는 시스템이 불안해서인지 몇번 애플의 고객센터와 이메일 교환후에 등록되었는데, 이젠 아무 문제없이 잘되더군요.
그동안 개인적으론 2개의 어플을 시험삼아 올려 보았고 아는분과 함께 사전들을 올려 보았습니다. 가장 최근에는 간단한 영단어 게임을 만들어서 올렸고 일주일이 넘었으니 몇일있으면 등록이 될 것 같습니다.
그동안 너무 안일하게 있었는데 개발자 프로그램 연장도 했고 컨디션도 좋아졌으니 다시 열심히 일도하고 블로깅도 할려고 합니다. 올려놓고 방생해놓은 어플들도 업그레이드를 해야할 것 같고요. 개발자로 있으면서 윈95, 인터넷등 몇번의 커다란 환경변화를 겪었지만 앱스토어가 체감적으로 가장 큰 영향을 주고 있는 것 같습니다.
아이폰 3.0 SDK 부터는 accelerometer를 사용하지 않고도 UIResponder에 추가된 motion 이벤트 처리 메소드를 구현함으로써 간단하게 사용자의 흔들기 동작을 체크할 수 있습니다. 저도 처음 사용해 보면서 간단한 내용들을 정리해 보았습니다.
1. First responder 되기
사용자의 흔들기 이벤트를 처리할 ViewController는 그 자신이 First responder가 되어야 합니다. becomFirstResponder 메소드를 호출하고 canBecomeFirstResponder 메소드에서 YES를 반환합니다.
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self becomeFirstResponder];
}
-(BOOL)canBecomeFirstResponder {
returnYES;
}
viewDidAppear는 코드에서 서브뷰로 추가될 때만 호출됩니다. IB에서 바로 Window에 View를 추가하였으면 awakeFromNib등의 메소드에서 becomFirstResponder를 호출하셔야 합니다.
2. motion 메소드 구현
이후로는 간단합니다. 사용자의 흔들기가 시작되면 해당 motionBegan이 호출되고 종료될 때 motionEnded가 호출됩니다. 지나치게 많이 흔들거나 하여 유효하지 않은 흔들기로 판단될 때는 motionCancelled가 호출됩니다.
여지껏 아이폰으로 잘 개발하고 있다가 오늘 Xcode를 실행해보니, 빌드가 안되는 것이었습니다. 빌드가 잘될 때랑 지금이랑 Xcode도 그렇고 아이폰도 그렇고 바뀐 것은 아무것도 없었습니다. 오거나이즈를 열어 보니 아래와 같은 메시지가 나타났습니다.
Provisioning과 Application 정보가 나와야 할 곳에 "Could not support developement"란 오류메시지가 보였습니다. "Xcode cannot find the software image to install this version"는 말그대로 Xcode가 인스톨할 새로운 OS 이미지가 없다는 것으로 이전부터 나온 메시지였습니다.
인터넷에서 검색을 해보기에 앞서 이전부터 뜬금없이 나오는 프로비저닝 오류에서도 리부팅을 하면 된적이 있어 리부팅을 해보았습니다. 결과는 성공이고 초록색불과 함께 정상적으로 기기를 사용할 수 있었습니다.
한번은 오거나이즈에서 "This device is not currently connected."란 메시지가 나왔습니다. 그때는 Xcode를 재실행하니까 되더군요. 우연인지 모르겠지만 터치로 개발할 때보다 아이폰으로 개발할 때 이런 일들이 더 자주 일어 나는 것 같습니다.
이유는 모릅니다만 "안되면 껐다 켜라"라는 컴퓨터 사용시의 진리가 아이폰과 터치에서도 통하는 것 같습니다.
일때문에 아이폰 3GS를 잠시 가지고 있게 되었습니다. 다들 아시다시피 터치와 다른점은 조금 더 두껍고 카메라가 달렸다는 것입니다. 어플리케이션은 전화, 메시지와 나침반 정도가 눈에 뜁니다.
제가 만든 사전을 돌려보니 터치 2세대에서는 검색시 약간의 멈춤이 있었는데 3GS에서는 멈춤없이 바로 실행되더군요. 정확한 스펙은 보지 않았지만 속도도 많이 빨라진 것 같습니다.
전화는 개통되지 않았기 때문에 화면의 버튼들만 눌러 보았습니다. 제가 그동안 블랙잭만 써서 그런지 번호를 누르기가 정말 편하게 되어 있는 것 같았습니다.
카메라와 동영상의 화질도 블로그에 올리는 등 웹상에서 사용하기에 전혀 무리가 없을 정도로 괜찮았습니다. 혐오스러운 사진일 수도 있겠지만 3GS를 들고 다니며 찍은 사진이 없어 이것으로 올려 봅니다.
제 개인 블로그에는 주로 먹고 마시는 소소한 일상들을 많이 올리고 있습니다. 주로 블랙잭으로 많이 찍어 화질이 조금 아쉬웠는데 이정도면 괜찮을 것 같다는 생각이 듭니다. 한달전쯤 집사람의 핸드폰이 고장났습니다. 9월 초 아이폰이 나온다는 소문이 있어서, 아이의 핸드폰을 사용하며 기다려 보다가 출시되면 같이 아이폰을 사기로 했습니다.
늘 그렇듯이 역시나 잘못된 소문이었네요. 집사람은 다른 핸드폰을 사고 전 계속 아이폰을 기다리고 있습니다. 아이폰 하나면 되는데 항상 블랙잭과 터치, 두개를 가지고 다니기 번거롭고 빨리 나와주었으면 좋겠는데, 늘 소문만 무성하네요. 애플의 아이폰 발매 국가 페이지의 Coming Soon에 나오기전까지는 잊고 살자고 했는데, 막상 실제 아이폰을 보니 가지고 싶은 마음에 또 조급해집니다.
이전에 포스팅한 "NSXMLParser로 RSS 읽어오기"와 유사한 방법으로 구글 날씨 RSS를 가져오는 것을 만들어 보았습니다. 그런데 한글이 깨져나와 확인해 보니 문자셋이 euc-kr이었습니다. 문자셋을 확인하는 방법은 URLConnection의 델리게이트 메소드에서 확인할 수 있습니다.
한가지 이상한 점은 웹브라우저에서 확인하면 같은 URL이지만 utf-8로 넘어 옵니다. 아마 서버에서 헤더를 검사에서 각각 다른 인코딩으로 넘겨주는 것이 아닌가 하는 생각이 듭니다. 헤더의 항목들을 변경해서 보았는데 User-Agent를 설정해서 보내보니 euc-kr이 아닌 utf-8로 넘어 왔습니다.
구글의 날씨 API에서는 이와 같이 User-Agent를 보내면 utf-8로 보내기때문에 위와같이 인코딩의 변환이 필요하지 않습니다. 아마 예측가능한 User-Agent는 utf-8로 보내고 그외에는 euc-kr로 보내는 것 같습니다. 이는 영문도 마찬가지이며 http://www.google.com/ig/api?weather=seoul와 같이 co.kr에서 com으로 변경하면 문자셋이 iso-8859-1로 넘어 옵니다. User-Agent를 추가하면 역시 utf-8로 넘어 옵니다.
이전부터 그냥 복사해서 올렸는데 오늘 보니 아래와 같이 나오는 건 너무 보기가 힘든 것 같아서, 예제코드를 Quick Highlighter를 사용해서 정리해 보았습니다.
어제 스크래치 책이 나왔습니다. 저자에는 제 이름이 나와있지만 사실 저는 블로그의 내용만 제공하고 출판사에 계신 분들이 작업을 다하셨습니다. 어제 처음 책을 받아 보았는데 내용들도 많이 추가, 변경되고 한글 명령어로 다시 캡쳐하여 만드셨더군요. 왠지 뒤에서 고생은 다른 분들이 하고 제 이름이 무임승차한 것 같은 죄송함이 듭니다.
50대 중반이 되서 경험이 많이 쌓이면 개발에 관련된 책을 한번 써봤으면 좋겠다는 막연한 바램도 있었는데, 생각지도 못하게 이런 그림책(?)이 나오게될줄은 몰랐습니다. 즉흥적으로 시작했던 블로그인데 이 블로그를 통해서 같이 일하는 좋은 동료도 얻고, 책도 나오고, 술친구도 얻었으니 많은 선물을 받은 것 같습니다.
"Programming in Objective-C 2.0" 번역서가 출간을 앞두고 있습니다. 전 이전 버젼은 원서로 가지고 있고 추가된 부분만 보면 되기 때문에 2.0 버젼은 구입을 하지 않았습니다. 요즘 분위기로 봐서는 2.0 버젼의 번역서가 나오지 않을까 생각하고 있었는데 드디어 나오네요.
한달전쯤 "Objective-C (맥과 아이폰 애플리케이션 프로그래밍)"이란 책을 구입하여 아주 게으르게 읽어 보고 있습니다. "Programming in Objective-C 2.0"이 곧 번역되어 나온다는 것을 알았으면 조금 기다렸을 것 같습니다. 그래도 위의 책도 꽤 괜찮으니 별로 후회는 하지 않습니다.
Objective-C 언어에서는 거의 교과서적인 책이라 비슷한 책이 있지만 소장용으로라도 구입을 하기로 했습니다.
내용은 아직 확인하지 못했지만 인터넷에서 보고 마음에 안드는 부분이 있네요. 그것은 바로 표지입니다.
개인적으로는 원서의 표지가 차분하고 무엇인가 교재 같은 디자인에 책꽂이에 꽂혀 있으면 튀지않고 좋을 것 같습니다. 오렐리의 책들이 번역되면서 특유의 동물 디자인을 유지하였듯이 이책도 원서의 표지 디자인을 유지했으면 했는데, 아쉽게도 전혀 다른 디자인으로 나왔네요.
각분야의 대표적인 책들에게서는 떠오르는 이미지가 있습니다. 흔히 공룡책이라 불리우는 "Operating System Concepts"도 마찬가지며, 이 책은 번역서에서도 원서의 공룡 표지를 그대로 사용했습니다. 아마 요즘 나오는 책들처럼 기하학적인 무뉘로 나왔으면 무엇인가 서운했을 것 같습니다. 제가 워낙 구식이고 미적감각이 없는데다, 개발 관련 서적에 대한 선입견이 있어서 요즘 표지 디자인이 낯설고 좋게 보이지 않나 봅니다. 빨리 신세대 디자인에 적용을 해야할텐데요.
올해 6월초 저자이신 강덕진님으로 부터 리뷰 요청을 받고 아무 생각없이 해드리겠다고 했습니다. 그후 "4장 화면을 이루는 기본 : 뷰"의 원고를 보내 주셨습니다. 막상 받고 보니 책 원고의 리뷰란 것도 생전 처음 해보고, 관련내용에 대해서도 잘 알지 못하면서 괜히 민폐만 끼치는 것이 아닌가 하는 생각이 들었습니다. 사실 리뷰를 했다기 보다는 읽어 보면서 공부를 했다는 것이 맞을 것 같습니다.
그런데 저자분께서 몇일전에 책이 나왔다고 한권 보내 주셨습니다. 아직 읽어 보지는 못했지만 대충 흩어 보니 Xcode 다운로드부터 앱스토어에 엡을 올리는 과정까지 전반적인 내용을 잘 정리하신 것 같습니다. 제목처럼 3.0에서 추가된 내용들도 포함되어 있고, 샘플코드 위주로 설명되어 있어 아이폰 SDK를 공부하시는 분들께 많은 도움이 될 것 같습니다.
원고를 미리 보고 완성된 책을 보니 책을 쓴다는 것이 관련지식뿐만 아니라 많은 노력과 열정이 필요한 작업 같습니다. Objective-C와 코코아 관련 책은 몇권 있지만, 아이폰 어플 제작에 관련된 책들은 없었습니다. 이 기회에 차분히 아이폰 SDK 공부나 열심히 해보아야 겠습니다.
2008년 1월 "프로그래밍 언어 인기 순위"를 포스팅할 때에 Objective-C는 47위에 점유율은 0.071%였습니다. 오늘 다시 TIOBE Index에서 확인해 본 결과는 놀랍게도 19위까지 올라 가있었습니다. 해당 페이지에서도 Objective-C가 20위 내로 들어 온 것이 헤드라인으로 되어 있습니다. 검색 사이트들의 키워드를 분석한 TIOBE의 이 순위가 정확한 점유율을 나타낸다고 볼 수는 없겠지만 어느정도의 의미는 있다고 생각이됩니다.
Objective-C의 갑작스러운 증가는 애플의 앱스토어가 가장 큰 원인으로 짐작됩니다. 서점을 가 보아도 아이폰 개발 관련 서적들이 상당히 많이 나와있습니다. '코코아 프로그래밍'이란 번역서를 제외하고는 관련서적이 거의 전무했던 불과 1년전만 생각해 보아도 짧은 기간에 많은 관심을 받게 된 것 같습니다.
몇년전 부터 코코아를 조금씩 공부하면서 뭐랄까? 많은 사람들이 지나다니지 않는 작은 오솔길을 걷고 있는 느낌이 있었습니다. 자주 마주치진 않지만 간혹 '아, 나 말고도 다니는 사람이 있긴 있구나'하는 정도로요.
이제 이 오솔길은 정식 등산로가 되어 많은 사람들이 지나다니게 되었습니다. 많은 사람들과 함께 더 편하고 쉽게 올라 갈 수 있게 되었지만, 이전과 같이 한적한 오솔길을 다니는 소소한 재미가 생각이 나긴 합니다.
NSXMLParser 오브젝트를 수신된 데이터가 저장된 NSData 타입의 receiveData를 인자로 초기화를 합니다. setDelegate 메소드로 현재 오브젝트를 NSXMLParser의 딜리케이트로 지정합니다. 지정된 오브젝트는 요소별로 파싱의 시작/종료와 파싱된 스트링을 받을 수 있는 메소드를 구현해야 합니다.
parse 메소드로 파싱이 시작됩니다. 파싱은 자동으로 처리되지 않으며, 각 단계별로 딜리게이트된 메소드를 구현하여 필요와 형식에 맞게 직접 처리해야 합니다.
2. Delegate 메소드 구현
NSXMLParser에는 많은 딜리게이트 메소드가 있지만 가장 중요하고 거의 반드시 구현해야될 메소드는 parser:didStartElement, parser:foundCharacters, parser:didEndElement입니다.
parser:didStartElement로 한 요소의 파싱이 시작됨을 알수 있습니다. parser:foundCharacters로 해당 문자열들이 넘어 옵니다. 토큰 단위로 넘어 오기 때문에 넘어 오는 문자열들을 계속 저장해야 합니다. parser:didEndElement가 실행되면 비로소 한 요소의 파싱이 끝난 것을 알 수 있습니다. 이 메소드에서 해당 요소에 따른 필요한 처리를 합니다.
두번째 인자인 elementName으로 해당요소의 이름이 전달됩니다. 세번째와 네번째 인자는 네임스페이스와 관련된 uri와 전체이름이 전달됩니다. 만약 해당 xml이 네임스페이스를 사용한다면 이전에 [parser setShouldProcessNamespaces:YES];로 네임스페이스를 처리하도록 설정해야 합니다. NSXMLParser의 shouldProcessANamespace의 기본값은 NO 입니다.
마지막 인자인 attributeDict에는 해당 요소의 속성들이 전달됩니다. 만약 <item lang="ko"> 와 같이 되어 있다면 attributeDict 딕셔너리에 key가 'lang', value가 'ko'로 저장되어 전달됩니다.
여기서는 다른 인자들은 무시하고 item이란 이름의 요소가 시작될때 부터 데이터들을 저장하도록 요소이름이 item인지만 확인합니다. 그리고 xmlValue에 새로운 데이터를 저장하기 위해 이전에 저장된 값들을 초기화합니다.
if ([elementName isEqualToString:@"title"]) {
[currectItem setValue:[NSString stringWithString:xmlValue] forKey:elementName];
} else if ([elementName isEqualToString:@"link"]) {
[currectItem setValue:[NSString stringWithString:xmlValue] forKey:elementName];
} else if ([elementName isEqualToString:@"description"]) {
[currectItem setValue:[NSString stringWithString:xmlValue] forKey:elementName];
} else if ([elementName isEqualToString:@"category"]) {
[currectItem setValue:[NSString stringWithString:xmlValue] forKey:elementName];
} else if ([elementName isEqualToString:@"pubDate"]) {
[currectItem setValue:[NSString stringWithString:xmlValue] forKey:elementName];
} else if ([elementName isEqualToString:@"item"]) {
[xmlParseData addObject:[NSDictionary dictionaryWithDictionary:currectItem]];
}
}
한 요소가 끝날때 호출됩니다. 여기서는 RSS의 title, link, description, category, pubData 항목들만 currentItem 딕셔너리에 저장합니다. 한 포스팅의 마지막 요소인 </item>일 경우에는 xmlParseData에 현재 딕셔너리를 추가합니다.