NSArray는 많이 쓰이는 클래스이기도 하며, 현재 제작중인 "전생에 우리는" 아이폰 버전에서는, 배열안의 문장들을 나열하고 그 문장 중 랜덤으로 임의의 문장을 뽑아 문장 안에 사용자가 (EditText에 쓴) 문자를 받아와서 문장안에 넣어야 합니다.
이를테면, " 120년 전 |님과 |님은 친구였습니다" 라는 배열안의 문장을 뽑아온다면,
|에 사용자가 넣어놓은 변수를 받아와서 저 부분에 넣어야 하는 문제에 부딪쳤습니다.
먼저 이럴 때 사용되는 클래스는 NSArray 와 NSString 입니다.
이론적으로 |을 찾아내서 |을 기준으로 5부분 (120년전 , | , 님과 , | , 님은 친구였습니다)라고 나눈 뒤에 두번째와 네번째에 다른 변수를 넣을 예정입니다. ( 변수자체를 넣는 방법도 있다고 하는데.. 좀 더 찾아 본 뒤 포스팅 하도록 하겠습니다. )
먼저 랜덤으로 문장 내에 한 문장을 뽑아냅니다.
int r;
r = rand()%4; // 0~4까지의 숫자 중 임의의 숫자를 랜덤으로 뽑아낸다.
NSString *originaldata = [이미 만들어놓은 문장 배열 cobjectAtIndex:r]; // 이미 만들어놓은 문장 배열 중 랜덤으로 뽑은 인덱스 값에 해당하는 문장을 불러온다.
NSArray *separatedstring = [originaldata componentsSeparateByString:@"|"]; // |으로 문장 내를 나눈다.
NSString *lastString [NSString stringwithFormat:@"%@%@%@%@%@", [separtedstring objectAtIndex:0],
toSendTextField.text, [separtedstring objectAtIndex:1], fromTextField.text, [separtedstring objectAtIndex:3]];
//5개로 나누었던 문장에서 0, 1, 2 값을 맞게 배치하고 |의 자리에는 TextField의 값을 대입한다.
위와 관련해서 좀 더 NSArray를 자세히 파해쳐 보면, NSArray 는 NSObject를 상속하며, 저장할 모든 객체와 함께 생성이 됩니다.
NSArray 인스턴스에서는 객체를 제거하거나 삽입할 수가 없습니다 (저같은 경우는 임의대로 문장을 추가하거나 삭제할 수가 없다는 이야기가 됩니다) 즉 성질이 '변경이 불가능한(immutable)'이므로, 이러한 단점을 극복하기 위해 변경할 수 있는 서브클래스인 NSMUtableArray가 존재 합니다.
변경할 수 없다는 점 때문에 특정 경우에 많이 사용이 되는데, (이를테면 전생에 우리는 같이 문장이 이미 정해져있고 더 이상 수정을 하지 않아도 될때) NSArray에서 많이 사용되는 메서드에 대해서 간단하게 알아보면,
- (unsigned)count : 현재 배열의 객체 수를 리턴
- (id) objectAtIndex:(unsigned)i : i에 있는 배열을 리턴한다.
- (id) lastObject : 배열의 마지막에 있는 객체를 리턴, 배열이 비어있으면 nil을 리턴
- (BOOL) containObject:(id)anObject : 만약 anObject 가 있다면 YES를 리턴하며, 각 객체에 현재 배열에 anObject가 있는지 확인함.
NSString 은 유니코드 문자열의 버퍼로, 코코아에서는 모든 문자열 처리를 NSString에서 처리하며, Objective-C 에서는 @"string값" 으로 문자열 객체를 생성합니다.
NSString *temp = @"this is instans";
NSString 역시 NSObject를 상속하며, 자주 사용되는 메서드는,
- (id)initWithFormat:(NSString *)format, ... :
- (unsigned int)length : 문자의 수를 리턴한다.
- (NSString *)stringByAppendingString:(NSString *)aString 리시버에 aString을 덧붙여서 만든 문자열 객체를 리턴.
위의 두 클래스에 대한 포스팅은 마치겠습니다 ^^
'옛글 > 아이폰 프로그래밍' 카테고리의 다른 글
[iOS프로그래밍] Appdelegate (0) | 2012.05.03 |
---|---|
[iOS프로그래밍] ARC(Automatic Refrence Counting) (0) | 2012.04.30 |
[iOS프로그래밍] Objective-C와 JAVA (1) | 2012.04.25 |
[iOS프로그래밍] UIWebview로 url을 띄워보기 (0) | 2012.04.23 |
[iOS프로그래밍] 시작해보자~!(2) : 실제 프로젝트 생성해보자 (0) | 2012.04.22 |