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
-
내 나이대도 이제는 젊다고 하기에는 힘든(?) 수준으로 치닫고 있다. 세월의 흐름이 너무 빨라서 아쉽고 벅차고 숨차기는 하지만, 이럴 때 일 수록 추억을 떠올려 보면 나름 재미있는 세월을 보냈구나 생각이 든다. 이참에 옛날 옛적에 쓰던 구식 컴퓨터...
-
Vim이 강력한 편집기로써 군림하게 된 건 편한 키맵, 정규표현식, 그리고 이 매크로 레코딩 기능이 있기 때문이라고 감히 주장하고 싶다. 레코딩 기능은 사용자가 입력하는 키를 그대로 녹화해서 매크로로 만들어 주는 기능이다. 이 기능에 대해 간단히...
-
이번 글은 굉장히 유명한 수학 함수 3가지를 적어보는 글입니다. 그리고 오랜만에 구어체가 아닌 존대말(?)로 쓰는 글이기도 하겠네요. 이번에 언급하는 함수 세 가지, 즉 ceil(), floor(), round() 함수는 C 언어 시절부터 쓰이...
-
편의성 측면도 있겠지만 애플에서 Swift 를 강력하게 밀고 있기에 아무래도 macOS나 iOS용 개발 언어는 Swift 가 주류가 될 가능성이 높다. 하지만 그렇더라도 한동안은 Objective-C 와의 동거를 끝낼 수는 없을 것이다. 그 증거로 애...
-
sigsegv 검색을 통해 유입된 내역이 하나 보여서 잠깐 설명.
-
이번 이야기는 Raw Pointer 대충 번역하면 생포인터에 대한 이야기다. 쉽게 표현하자면 이 생포인터는 타입이 지정되지 않은(Untyped) 포인터이다. 포인터 시작편에서 언급했지만 이 생포인터는 타입이 명시되지 않았다는 점 때문에 Swift 에서...
-
지금까지 iOS 및 macOS 용 앱을 여럿 만들어 왔지만 레이어에 대해서는 자세히 공부해 본 적이 없었다. 블로그에 글 쓸 주제도 적어지고 마침 필요도 하기에 레이어에 대해 공부해 보면서 알게 된 것들을 정리해 보려고 한다.
-
Vim에서 한글을 입력하다 ESC를 눌러서 편집모드를 빠져 나와서 다른 커맨드를 입력하려 할 때 동작 안하는 경우가 있다. 한글 상태라서 키 입력을 제대로 못 알아먹는 상태인데 수동으로 영문으로 바꿔주면 되긴 된다. 이런 불편함으로 인해 영어만을 사용...
-
개인적으로 윈도우를 오랫동안 사용하다 맥을 처음 사용했을 때 용어나 각 앱의 이름이 뭔지 몰라서 막막했던 시절이 있었다. 그 때를 회상하며 약간 헷갈리거나 알 수 없는 용어들을 한번 정리해 볼까 한다.
0 comments:
댓글 쓰기