본문 바로가기

개발도구/iOS - 아이폰 개발

[아이폰-펌] 문자열 합치기

하루를 꼬박 헤딩을 해 가면서 결국 해결한 문제네요.
일단 기본적인 문법을 잘 이해를 못해서 생기는 문제였는데
요약 하면 다음과 같습니다.

플래시 액션스크립트 같은 경우 보통 문자열은 따옴표 안에 들어가게 됩니다.

str1 = "안녕하세요."
str2 = "좋은 아침입니다."
str3 = str1 + str2

그리고 문자열을 합치기 위해서 단순 연산자를 사용 합니다.
str3 의 값은 "안녕하세요. 좋은 아침입니다." 라는 결과를 가지게 되죠.

그런데 Objective-C 는 좀 복잡한 절차를 밟아야 합니다.

1. 타입 선언 (NSString)
2. 포인트 지정 (*변수명)
3. 문자열 선언 (@"문자열")
4. 문자열 합치기 명령어 (stringWithFormat)

코드로 보자면 다음과 같습니다.

NSString *str1 = @"안녕하세요.";

NSString *str2 = @"좋은 아침입니다.";

NSString *str3 = [NSString stringWithFormat:@"%@%@",str1,str2];


라고 해야지 str3 변수에 문자열 "안녕하세요.좋은 아침입니다." 가 들어가게 됩니다.
이렇게 변수 하나만 쓸 때는 별로 큰 문제가 없지만
변수끼리 합쳐서 사용을 해야 하는 경우에는 
예를 들어 

"http://www.naver.com/login.php?id=dark&pw=1234"

이렇게 아이디 패스워드를 텍스트 필드에서 받아서 처리를 해야 하는 경우에는 
"http://www.naver.com/login.php?id="
문자 처리하고
아이디 입력 받고 패스워드 입력 받아서
총 3 개의 문자열을 합쳐야 하는 경우가 발생을 하는 것입니다.

idTF, pwTF 라는 텍스트필드가 있을 경우
플래시 액션스크립트 같은 경우는

url = "http://www.naver.com/login.php?id="+idTF.text+"&pw="+pwTF.text

이렇게 하면 url 변수에 텍스트 필드에서 아이디 패스워드 값을 받아서 문자열을 만들 수 있습니다.
상당히 직관적이라 이해하기 쉬운데 Objective-C 같은 경우는 문법이 다릅니다.

NSString *url = [NSString stringWithFormat:@"http://www.naver.com/login.php?id=%@&pw=%@",idTF.text,pwTF.text];


이렇게 해야지 url 변수에 지정된 url 에 텍스트 필드에서 

아이디 패스워드 값을 받아서 문자열 처리를 할 수 있게 됩니다.


대충 설명을 드리자면 stringWithFormat 명령은 문자열을 합친다는 것이고

따옴표 앞에 @ 는 유니코드를 지정하는 뜻으로

일반적인 문자열에는 그냥 쓴다고 이해하시면 됩니다.


그리고 중간에 보면 %@ 표시가 있는데 그게 특정 값을 문자열에 넣는 다는 것으로

id=%@ 되어 있으면 id= 에 어떠한 값을 붙인 다는 것입니다.

예제 코드는 idTF.text 값을 넣은 것입니다.

그리고 뒤에 pw=%@ 해 놓은 것은 pwTF.text 값을 넣은 것이고요.

즉, %@ 갯수 만큼 뒤에서 다른 값을 순서대로 넣게 된 것입니다.


프로그램 코딩에 상당히 많이 쓰이면서도 

문법의 차이로 인해 별것도 아닌 것에 많은 시간을 투자하게 되는데

저처럼 몰라서 고생하셨던 분들 많은 도움이 되셨으면 좋겠습니다.