아이폰어플개발정보2010. 8. 30. 10:07
아이폰 어플 개발 , 사용자 홈 디렉토리 찍어보기 (NSString 클래스 이용)

[과제B Section 1] 사용자 홈 디렉토리 찍어보기 (NSString 클래스 이용)

NSString *path = @"~";
를 이용하여

My home folder is at '/Users/pmarcos'
를 출력하라.

또한 경로를 배열로 돌려주는 메소드를 이용하여 아래와 같이 출력하라.

/
Users
pmarcos


Objective-C의 NSString을 이용할땐 항상 @”Hello World” 와 같이 앞에 @를 붙여 주어야 한다.

NSString을 이용하여야 할 곳에 C의 String을 이용해 버리면 프로그램이 제대로 작동하지 않을수 있다.

■ NSString 클래스에 대한 정보는 어디에 있을까?

iPhone Dev Center 에 가면

iPhone Reference Library > Resource Types > Reference 를 열면 기본 클래스에 대한 문서들이 나오며 검색창이 보인다.
"NSString"이라고 치면 NSStringClass Reference 라는 링크를 볼 수 있다.
또한 설치한 Xcode의 Help > Documentation으로 가서 찾아도 된다.
■ 유저 홈 디렉토리란?
Mac OS는 유닉스베이스로 만들어져 있음으로 유저 홈 디렉토리는 "~"(틸드)로 표현이 가능하다.
스트링을 선언해 본다.
NSString *path = @"~";
<원하는 결과>
My home folder is at '/Users/pmarcos'
<시도1>
NSLog(@"My home folder is at %@", path);
* 여기서 %@란 Objective-C의 오브젝트를 의미한다. 자세히는 Format Specifiers 참조.
결과는 My home folder is at ~.
당연하다면 당연하지만, 혹시나 자동으로 바꿔주나 싶었다.
다시 NSString의 API Doc을 참조하여 이번엔 어떤 메소드가 있나 봤다.
틸드가 어쩌고 하는 메소드 발견.
내용은... 패스안에 틸드로 생략된 문자? ... 참 긴 이름이다.
stringByAbbreviatingWithTildeInPath

Returns a new string representing the receiver as a path with a tilde (~) substituted for the full path to the current user’s home directory.

- (NSString *)stringByAbbreviatingWithTildeInPath

Return Value

A new string representing the receiver as a path with a tilde (~) substituted for the full path to the current user’s home directory. Returns a new string matching the receiver if the receiver doesn’t begin with a user’s home directory.

어쨋든 틸드 대신 스트링으로 유저홈을 돌려주나보다.

<시도2>

NSLog(@"My home folder is at %@", [path stringByAbbreviatingWithTildeInPath]);

<결과>
성공!!!
 
■ 경로를 배열로 취득하기
 
NSString 클래스 리퍼런스 문서를 더 찾아보니 pathComponents라는 인스턴스 메소드가 존재한다.
리턴값은 NSArray. 사용해 보았다.
 
NSArray *pathComponents = [path pathComponents];
 
배열로 돌아왔으니 루프를 돌리면서 찍어보자.
아.. 루프 돌리는 법을 모르네... 문법 참조. (The Objective-C Programming Language - Fast Enumeration)
 
for (NSString *element in pathComponents){
    NSLog(element);
}
 
무난히 완성!!!
 


출처 : http://blog.naver.com/PostView.nhn?blogId=katchup00&logNo=10075347794
Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 6. 22. 17:53
과제B.3 - 즐겨찾기 만들어보기 (NSMutableDictionary 클래스 이용)

[과제B Section 3] 즐겨찾기 만들어보기 (NSMutableDictionary 클래스 이용)

아래의 값으로 NSMutableDictionary를 생성한다.

Key (NSString) Value (NSURL)
Stanford University http://www.stanford.edu
Apple http://www.apple.com
CS193P http://cs193p.stanford.edu
Stanford on iTunes U http://itunes.stanford.edu
Stanford Mall http://stanfordshop.com

루프를 돌다가 Stanford로 시작하는 키를 가진 값이 있으면 아래와 같이 로그를 출력한다.


Key: 'Stanford University' URL: 'http://www.stanford.edu'


<조건 및 힌트>
+URLWithString: 을 이용하여 URL 인스턴스를 생성하라.
NSString의 prefix/suffix를 체크하는 메소드를 이용하라.
NSMutableDictionary 는 NSDictionary의 서브클래스임을 기억하라.


NSMutableDictionary를 생성하기 위해 리퍼런스를 보자.

클래스 메소드에 dictionaryWithCapacity: 밖에 없으니... 슈퍼클래스인 NSDictionary의 클래스 메소드를 살펴본다.

dictionary라는 빈 딕셔너리를 생성해주는 클래스 메소드를 찾았다.


이용해 본다.

NSMutableDictionary *myDictionary = [NSMutableDictionary dictionary];


키와 값을 추가한다.


<시도 1>

- (void)setObject:(id)anObject forKey:(id)aKey 을 이용해 본다.


[myDictionary setObject:[NSURL URLWithString:@"http://www.stanford.edu"] forKey:@"Stanford University"];
[myDictionary setObject:[NSURL URLWithString:@"
http://www.apple.com"] forKey:@"Apple"];
[myDictionary setObject:[NSURL URLWithString:@"
http://cs193p.stanford.edu"] forKey:@"CS193P"];
[myDictionary setObject:[NSURL URLWithString:@"
http://itunes.stanford.edu"] forKey:@"Stanford on iTunes U"];
[myDictionary setObject:[NSURL URLWithString:@"
http://stanfordshop.com"] forKey:@"Stanford Mall"];


<결과>
일단 컴파일 에러가 안나니까 성공.

계속해서 Stanford로 시작하는 키의 정보를 로그로 출력해 보자.

NSDictionary의 - (NSArray *)allKeys 를 이용해 본다.


for (NSString *element in [myDictionary allKeys] ) {
    NSLog(element);
}


■ 그럼 스트링이 특정 문자로 시작하는지 알아보는 메소드는?


혹시 prefixWith.. 라는 메소드가 있나 했는데 없다. 음...


NSString Class Reference의 COMPANION GUIDES에 나와있는 String Programming Guide for Cocoa을 열어 봤다.

문서내의 Searching, Comparing, and Sorting Strings를 참조.

검색 메소드중 rangeOfString:options: 이라는게 있는데 이 옵션을 살펴보니 아래와 같은 내용이 있다.

검색 옵션 효과
NSAnchoredSearch Performs searching only on characters at the beginning or end of the range. No match at the beginning or end means nothing is found, even if a matching sequence of characters occurs elsewhere in the string.


NSString의 처음이나 끝에 검색하고자 하는 스트링이 있는지 찾아본다. 중간에 있는건 무효.

<시도>    
NSRange prefixRange = [key rangeOfString:@"Stanford" options:NSAnchoredSearch)];


리턴값은 NSRange인데 rangeOfString:options: 메소드의 설명을 보면 아래와 같다.

Return Value
An NSRange structure giving the location and length in the receiver of the first occurrence of aString, modulo the options in mask. Returns {NSNotFound, 0} if aString is not found or is empty (@"").

즉, 값을 찾지 못했을경우에는 {NSNotFound, 0} 가 돌아온다고 한다.


NSRange는 아래와 같은 구조체 이니까,

typedef struct _NSRange {
   NSUInteger location;
   NSUInteger length;
} NSRange;


location이 NSNotFound인지 살펴보면 될 것 같다.

if ([element rangeOfString:@"Stanford" options:NSAnchoredSearch].location != NSNotFound) {
    로그출력...
}


<결과>
성공!!!



출처 : http://blog.naver.com/PostView.nhn?blogId=katchup00&logNo=10075724258
Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 6. 22. 17:53
과제B.2 - 프로세스 ID 찍어보기 (NSProcessInfo 클래스 이용)

[과제B Section 2] 프로세스 ID 찍어보기 (NSProcessInfo 클래스 이용)

NSProcessInfo 를 이용하여 아래와 같이 프로세스명, 프로세스ID를 출력하라

Process Name: 'WhatATool' Process ID: '4556'


클래스 리퍼런스를 참조하니 processNameprocessIdentifier라는 그럴듯한 메소드가 있다.


<시도 1>

NSProcessInfo *pInfo = [NSProcessInfo processInfo];

NSLog(@"Process Name: '%@' Process ID: '%@'", [pInfo processName], [pInfo processIdentifier]);


<결과>

실패.... 컴파일 에러는 안나지만 프로그램 시작후 이상한 메세지가 뜬 상태로 안끝난다...


<시도 2>

프린트할 ID부분의 포멧을 %@ (오브젝트) 에서 %i (정수형)으로 바꿔봤다.

NSLog(@"Process Name: '%@' Process ID: '%i'", [pInfo processName], [pInfo processIdentifier]);


<결과>

성공!!!



출처 : http://blog.naver.com/PostView.nhn?blogId=katchup00&logNo=10075722816
Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 6. 22. 17:53
과제B.1 - 사용자 홈 디렉토리 찍어보기 (NSString 클래스 이용)

[과제B Section 1] 사용자 홈 디렉토리 찍어보기 (NSString 클래스 이용)

NSString *path = @"~";
를 이용하여

My home folder is at '/Users/pmarcos'
를 출력하라.

또한 경로를 배열로 돌려주는 메소드를 이용하여 아래와 같이 출력하라.

/
Users
pmarcos


Objective-C의 NSString을 이용할땐 항상 @”Hello World” 와 같이 앞에 @를 붙여 주어야 한다.

NSString을 이용하여야 할 곳에 C의 String을 이용해 버리면 프로그램이 제대로 작동하지 않을수 있다.

■ NSString 클래스에 대한 정보는 어디에 있을까?

iPhone Dev Center 에 가면

iPhone Reference Library > Resource Types > Reference 를 열면 기본 클래스에 대한 문서들이 나오며 검색창이 보인다.
"NSString"이라고 치면 NSStringClass Reference 라는 링크를 볼 수 있다.
또한 설치한 Xcode의 Help > Documentation으로 가서 찾아도 된다.
■ 유저 홈 디렉토리란?
Mac OS는 유닉스베이스로 만들어져 있음으로 유저 홈 디렉토리는 "~"(틸드)로 표현이 가능하다.
스트링을 선언해 본다.
NSString *path = @"~";
<원하는 결과>
My home folder is at '/Users/pmarcos'
<시도1>
NSLog(@"My home folder is at %@", path);
* 여기서 %@란 Objective-C의 오브젝트를 의미한다. 자세히는 Format Specifiers 참조.
결과는 My home folder is at ~.
당연하다면 당연하지만, 혹시나 자동으로 바꿔주나 싶었다.
다시 NSString의 API Doc을 참조하여 이번엔 어떤 메소드가 있나 봤다.
틸드가 어쩌고 하는 메소드 발견.
내용은... 패스안에 틸드로 생략된 문자? ... 참 긴 이름이다.
stringByAbbreviatingWithTildeInPath

Returns a new string representing the receiver as a path with a tilde (~) substituted for the full path to the current user’s home directory.

- (NSString *)stringByAbbreviatingWithTildeInPath

Return Value

A new string representing the receiver as a path with a tilde (~) substituted for the full path to the current user’s home directory. Returns a new string matching the receiver if the receiver doesn’t begin with a user’s home directory.

어쨋든 틸드 대신 스트링으로 유저홈을 돌려주나보다.

<시도2>

NSLog(@"My home folder is at %@", [path stringByAbbreviatingWithTildeInPath]);

<결과>
성공!!!
 
■ 경로를 배열로 취득하기
 
NSString 클래스 리퍼런스 문서를 더 찾아보니 pathComponents라는 인스턴스 메소드가 존재한다.
리턴값은 NSArray. 사용해 보았다.
 
NSArray *pathComponents = [path pathComponents];
 
배열로 돌아왔으니 루프를 돌리면서 찍어보자.
아.. 루프 돌리는 법을 모르네... 문법 참조. (The Objective-C Programming Language - Fast Enumeration)
 
for (NSString *element in pathComponents){
    NSLog(element);
}
 
무난히 완성!!!
 


출처 : http://blog.naver.com/PostView.nhn?blogId=katchup00&logNo=10075347794
Posted by 오늘마감

댓글을 달아 주세요