본문 바로가기

about DEV/just follow

iOS 개발 무작정 따라하기 - Address Book 5

안녕하세요. 아이몬입니다.
지속적인 연재가 되어야하는데, 결혼과 신혼여행 등의 개인적 사유로 조금 미뤄졌네요. 
많은(?) 분들이 기다리고 계신것 같아, 설새고 부랴부랴 5편을 작성해봅니다.  다음부터는 더 빡쌘(?) 연재가 가능하도록 응원의 메세지를 남겨주세요! ^^ 

오늘은 주소록 만들기 제 5탄이다. 
지난번 강좌가 기억이 나지 않는다면 아래 URL을 참고!

2012/12/30 - [dev - just follow] - iOS 개발 무작정 따라하기 - Address Book 4

2012/12/21 - [dev - just follow] - iOS 개발 무작정 따라하기 - Address Book 3

2012/12/19 - [dev - just follow] - iOS 개발 무작정 따라하기 - Address Book 2

2012/12/11 - [dev - just follow] - iOS 개발 무작정 따라하기 - Address Book 1

지난번에 예고했듯이 새로운 그룹을 추가하고 저장하는 기능을 구현해 보려 한다.



지난번 위 이미지와 같은 결과물을 만들었을 것이다.  그런데, Group Name이나 Group Tag 등의 말 뜻은 알겠는데, 정작 "저장"을 하려하는 버튼이 존재하지 않는다.  그래서 상단 네비게이션 바 오른쪽에 "저장" 이라는 버튼을 만들어 보도록 하자.


일단 AddGroupViewController.h 파일을 클릭한 후에, saveGroup이라는 메서드를 선언한다.
메서드명에서 추론할 수 있듯이, 그룹을 저장하는 기능의 메서드로써 그 기능을 할 것이다.


그리고 .m파일로 이동하여, 상단 이미지의 붉은색 테두리와 같은 코드를 삽입하자.
이전 장에서 ViewController에서도 이와 비슷한 코드를 작성했을 탠데, 모양을 조금 다르게 한 BarButtonItem이다.  기존의 + 모양 대신, "저장" 이라는 타이틀을 삽입하도록 하였다.

여기까지 이상없이 진행했다면, 빌드(Run)해보도록 하자.


새로운 그룹을 추가하는 화면으로 이동해보면, 위 이미지에서 붉은색 테두리와 같이, "저장" 이라는 새로운 버튼이 등장하였다.  아직까지 위 버튼을 눌렀을때 어떤 기능을 하진 않는다.  그 기능이라는 것은 이제부터 여러분과 내가 함께 구현해나갈 것이다.


조금전에 선언했던 saveGroup 메서드내에 위 붉은색 테두리처럼의 코드를 추가해보자.
NSLog를 이용하여, groupNameTextField.text라는 녀석을 출력할 것이다.

이게 무엇일까? groupNameTextField?? 그리고 그 뒤에 .text?  고민할 것 없이 빌드를 해보자.


시뮬레이터가 실행되면 새로운 그룹추가하는 화면에서 위와 같이 텍스트 필드내에 임의의 텍스트를 입력한 후에, 상단 "저장" 버튼을 눌러보자. 


우와! 이게뭐지? Log가 찍히긴 찍히는데 (null)이라고 출력된다.  이건 뭔가 잘못됐어!!
라고 생각할수 있겠지만, 이게 지금까지 구현한 기능이였다.  자 이제 조금 생각을 해도록 하자.

생각..생각...생각....

대체 NSLog는 왜 써놓은 것일까? 생각을 해보았는가? 

그럼 생각했던 내용과 다음 내용이 맞는지 확인해보도록 하자.


AddGroupViewController.xib파일을 클릭해보면, 이전장에서 UI를 만든 객체들이 보여진다.
좌측 Placeholders라는 곳 아래에 Files' Owner를 우클릭해보면, 


위 이미지와 같은 결과물이 나타난다.
이제 우리가 올린 객체끼리 연결을 해볼 차례다.  Apple의 개발킷은 이러한 우아한 UI/UX를 제공한다.  나와 여러분은 내가 선언(!)한 객체와 내가 그린(!) 객체를 연결해주기만 하면 된다.  이게 바로 IBOutlet의 정체다.

아래 이미지들을 참조하여, 모든 객체들을 연결하도록 하자. 여기서 모든 객체라는 것은 Outlets내에서 searchDisplayController라는 녀석을 제외하고 모든 것을 말한다.



모든 객체를 연결했다면, 다시한번 Run을 클릭하여 무엇이 바뀌었는지 확인해보도록 하자.


시뮬레이터 상에서 "저장" 버튼을 클릭했을때, 하단 로그창에서 내가 입력한 임의의 텍스트가 출력되는 것을 확인할 수 있다.  아직 이해가 되질 않는가?  

NSLog(@"group Name : %@", groupNameTextField.text);

NSLog라는 것은 로그를 출력하라는 뜻이고, groupNameTextField라는 녀석에 입력되어있는 text를 %@ 여기에 대입하라는 말이다.  그래서! 우리는 우리가 무엇을 입력했는지 그리고 그것이 정상적으로 인식이 되고 있는지 이러한 Log 테스트를 통해서 확인해 볼 수 있다.

우리는 이번 장에서 정말 많은 개념을 접했다. 
일단 Apple의 센스있는 개발툴을 접했고, 그 IBOutlet이라는 개념도 접했다. 
그리고 손쉽게 textField에 입력된 텍스트의 값을 가져오는 기능도 이용했다.

아직 전부를 아우르진 않지만, 이번장에서 다룬 부분은 앞으로도 지속적으로 사용하게 될 부분이다.

그런데, 입력한 값(Value)을 저장해야하는 부분이 남았는데, 어떻게 저장을 해야할까 많은 고민을 했었다. 그러다가 내린 결론은, 초보자에겐 다소 어렵겠더라도 가장 다양하게 활용할 수 있는 범용적인 sqlite(DB)를 이용한 저장방식을 소개하기로 마음 먹었다.

DB라는 이름이 짠! 하고 등장했다고 겁먹을 것 하나도 없다.  부담을 가질 것도 없다.  단지 그냥 따라와주기만 하면 될 것이다. 
어떻게?  잘...  그럼 다음 강좌는 sqlite를 이용한 값의 저장 부분에 대해 다루도록 하겠다.