NSString 은 문자열 클래스임에도 불구하고 순수 문자열의 기능을 넘어서는 다양한 기능을 제공한다. 이 중 파일이나 폴더의 경로(path)와 관련된 기능들을 소개해본다.
- (NSString *)lastPathComponent
마지막 경로의 컴포넌트 문자열을 돌려준다. 즉 경로 구분자(/)를 이용해 문자열을 분리한 다음 마지막 문자열 아이템을 돌려준다고 보면 된다. 흔히 경로에서 파일 이름만을 뽑아낼 때 이용 할 수 있다.
예를 들어 @"/foo/bar/item" 문자열에 사용하면 @"item" 이 리턴된다.
- (NSString *)stringByDeletingLastPathComponent
위의 lastPathComponent 와는 반대되는 기능으로, 마지막 컴포넌트를 제외한 경로를 문자열로 돌려준다. 파일이 어떤 경로에 있는지 파악할 때 유용하게 사용 할 수 있다.
예를 들어 @"/foo/bar/item" 문자열에 사용하면 @"/foo/bar"가 리턴된다.
- (NSString *)stringByAppendingPathComponent:(NSString *)component
경로 문자열에 component 라는 경로를 추가할 때 이용한다.
예를 들어 @"/foo/bar" 에 @"item" 을 추가하면 @"/foo/bar/item" 이 조합되는 형식이다. 슬래쉬(/)는 자동으로 추가되니 신경쓰지 않아도 되어서 편하다.
- (NSString *)pathExtension
파일의 확장자명이 리턴된다. 파일의 확장자를 알아내야 할 경우 요긴하게 사용된다.
예를 들어 @"/foo/bar/item.txt" 라는 문자열에 사용하면 @"txt" 가 리턴된다.
- (NSString *)stringByDeletingPathExtension
위의 pathExtension과 반대로, 경로에서 확장자명을 삭제한 문자열을 리턴한다. 확장자를 제외한 파일 이름을 알아내야 할 때 위의 lastPathComponent와 조합해서 사용하면 유용한다.
예를 들어 @"/foo/bar/item.txt" 라는 문자열에 사용하면 @"/foo/bar/item" 이 리턴된다.
- (NSString *)stringByAppendingPathExtension:(NSString *)extension
위의 stringByDeletingPathExtension 과 반대로 이번에는 확장자명을 추가할 때 이용한다.
예를 들어 @"/foo/bar/item"에 @"txt"를 넘기면 @"/foo/bar/item.txt"가 리턴된다. 역시나 닷(.)이 알아서 붙으니 편하다.
이상의 API들을 조합하면 파일 이름과 경로와 확장자 이름 등을 잘 떼어내서 요리하기 편하다.
Popular Posts
-
이번 글은 굉장히 유명한 수학 함수 3가지를 적어보는 글입니다. 그리고 오랜만에 구어체가 아닌 존대말(?)로 쓰는 글이기도 하겠네요. 이번에 언급하는 함수 세 가지, 즉 ceil(), floor(), round() 함수는 C 언어 시절부터 쓰이...
-
XCode에 포함된건지 OSX에 기본적으로 배포되는지는 모르겠지만, 일단 기본적으로 FileMerge라는 머지툴을 이용 할 수 있다. 이걸 터미널에서 실행시킬 때는 opendiff 명령을 이용할 수 있다.
-
Emacs와 Vim은 성전(?)이라 불릴 정도의 치열한 영역싸움(거기다 감정싸움 까지도 -ㅁ-)을 벌이는 상대다. 그런데 거기에 이단이 있으니, 바로 Emacs를 vi(vim이 아니다)와 비슷하게 바꿔주는 모드가 있다. 바로 viper-mode 이다....
-
골프라는 스포츠는 공을 얼마나 적게 쳐서 홀에 집어넣는지를 겨루는 스포츠다. 타수를 줄여서 최대한 적게 친 순으로 순위가 메겨진다. VimGolf는 Vim으로 골프치는 것이 아니라 -_- 골프의 목적과 비슷하게 Vim으로 특정한 텍스트 프로세싱을 하는...
-
최근 iOS나 OS X SDK Framework 를 보고 있다면 블럭에 기반한 메소드들이 점점 늘어나는 것 같다. 상황에 따라서 들여쓰기 레벨이 높아지거나 좀 불안한(?) 코드 모양이 나오는 듯 코드 리딩에 안좋은 모양새를 나타낼 때도 있지만, 그래도...
-
일반적으로 OOP에서는 생성자(Constructor)와 파괴자(Destructor) 라는 개념이 있다. 객체의 탄생과 사라지는 시점에 맞춰 시작과 끝에 호출되는 메소드로 설명되는데, 스위프트에서는 초기화(Initialization)와 마무리(Deini...
-
내 나이대도 이제는 젊다고 하기에는 힘든(?) 수준으로 치닫고 있다. 세월의 흐름이 너무 빨라서 아쉽고 벅차고 숨차기는 하지만, 이럴 때 일 수록 추억을 떠올려 보면 나름 재미있는 세월을 보냈구나 생각이 든다. 이참에 옛날 옛적에 쓰던 구식 컴퓨터...
-
오랫만에 Objective-C 전용 글. 구시대(?) 방식으로 performSelector를 쓰는 경우 요즘은 아래와 같은 식의 빌드 경고가 발생 할 수 있다.
-
NSOperationQueue는 큐에 작업을 쌓아두고 이 작업들을 병렬로 처리하기 위한 클래스이다. 큐(Queue)라고 해서 한번에 하나씩 처리가 될 거라고 생각될 수도 있겠지만, 개별 작업을 개별 스레드에서 가능한 만큼 병렬로 한번에 실행시키려고 하...
0 comments:
댓글 쓰기