콘텐츠로 건너뛰기
Home » Development » Cocoa » Page 5

Cocoa

날짜와 시간을 다루기 – Swift Date/Time

날짜와 관련된 계산은 사실 알고보면 굉장히 복잡하고 어려운 작업이다. 날짜와 시간의 상관관계에 대해서 몇 가지 규칙들을 나열해보면 우리가 일상적으로 사용하는 날짜나 시간에 관한 규칙이 사실은 엄청나게 복잡하다는 것을 알게 된다. 기본적으로 초(second)를 가장 기본적인 시간의 단위로 생각한다. (더 작은 단위로 밀리초나 나노초가 있지만, 이들은 10진법 기반이므로 따로 생각하지 않아도 된다.) 초와 분은 60도법으로 계산된다. 60초는 1분, 60분은 1시간이다. 하루는 24시간으로 이루어진다. (그리고 놀랍게도 시계가 표시하는 시간은 지구상에서의 위치에 따라 또 다르다.) 사실 여기까지 생각했을 때는 별로 어렵지 않다. 하지만 날짜가… 더 보기 »날짜와 시간을 다루기 – Swift Date/Time

TableView for OSX

OSX의 테이블뷰 사용법

iOS의 테이블과 달리, OSX의 테이블뷰는 행과 열이 모두 존재하는 애트리뷰트들을 가진 레코드들의 집합을 표시하는 테이블이다. 예를 들어 종업원들의 명부를 표시하는 테이블 뷰는 성, 이름, 지점명의 각각의 칼럼을 가진 테이블을 표시하게 된다.
테이블 뷰는 하나 혹은 그 이상의 칼럼을 가질 수 있으며 횡방향, 종방향으로 스크롤 되고, 선택 영역을 가질 수 있고, 칼럼의 드래깅을 지원한다. 각각의 행은 데이터 집합 내에서 대응하는 하나 이상의 셀을 포함한다.

이 문서에서 은 테이블 내 실제 칸 하나를 의미한다. 셀을 나타내는 NSCell 혹은 그 서브 클래스는 필요하면 클래스명으로 직접 언급한다.

더 보기 »TableView for OSX

URLSession을 사용해서 간단한 데이터를 받아오기 – Swift

HTTP통신을 통해서 서버로부터 이미지나 텍스트와 같은 작은 파일을 가져오거나, API 통신을 하는 방법을 살펴보자. NSURLSession은 NSURLConnection과는 달리 ‘간단한’ 작업을 위해서는 정말 간단한 코드로만 작업을 수행할 수 있게 해준다. 대신에 NSURLSession은 완전한 비동기 통신만을 지원하는데, 해당 API는 가급적 델리게이트의 작성량을 최대한 줄일 수 있도록 디자인되어 있으므로 이러한 작업의 경우, 코드도 매우 단순해진다. 기본적인 원리에 대해서 살짝 언급하자면 다음과 같다. 통신을 위해서는 NSURLSession 객체가 필요하다. 세션 객체가 있다면 이로부터 NSURLSessionDataTask 객체를 생성할 수 있다. 모든 작업은 비동기로 이루어지므로, 델리게이트가 필요할 것이나 데이터… 더 보기 »URLSession을 사용해서 간단한 데이터를 받아오기 – Swift

코코아 바인딩이 동작하는 방식

코코아 바인딩은 뷰와 데이터 모델을 양방향으로 “묶어서(binding)” 한쪽에서의 변경이 다른쪽으로 자동으로 반영되게끔 하는 것이다. 예를 들어 슬라이더를 드래그하여 값을 변경한 것을 뷰 컨트롤러의 특정한 실수값 프로퍼티에 반영하도록 하거나, 혹은 클래스외부로부터 전달받은 메시지에 의해서 프로퍼티 값이 변경된 경우, 자동으로 이 값이 뷰에 반영되도록 하는 것이다. 이러한 기능은 코코아 바인딩을 쓰지 않고도 얼마든지 구현할 수 있지만, 코코아 바인딩을 사용하게 되면 많은 양의 “접합 코드”들을 작성하는 것을 생략할 수 있다. 예를 들어 다음과 같은 부분에 대한 코드를 일일이 작성해야 한다. 데이터의 변경을 업데이트해… 더 보기 »코코아 바인딩이 동작하는 방식

NSApplicationMain

NSApplicationMain int NSApplicationMain(int argc, const char* argv[]); 코코아 앱이 실행될 때 main 함수가 곧장 호출하는 함수로, 앱 객체를 생성하고 앱의 런칭 과정을 처리한다. 앱 객체의 클래스는 무조건 NSApplication이며, 앱 델리게이트는 nib 파일 내에 정의되어 있어야 한다. (iOS는 앱 델리게이트 클래스명을 전달하는 인자 부분이 마련되어 있음) argc, argv 파라미터가 정의되어 있지만, 실제로 값을 전달해도 무시한다. 코코아 내에서는 프로그램 실행시의 arguments를 _NSGetArgv, _NSGetArgc, _NSGetEnviron 함수들을 통해서 얻어야 한다.

날짜와 시간을 다루기(Swift)

날짜와 시간 다루기 (Swift)

Swift에서 날짜와 시간을 다루는 방법은 Foundation 프레임워크의 NSDate, NSCalendar, NSDateFormatter, NSDateComponents 등을 사용하게 되므로 Objective-C의 그것과 약간의 문법 차이만 있을 뿐이다.

날짜 계산의 기본 개념

날짜 계산의 단위가 되는 객체는 NSDate이다. 이 클래스는 특정한 시점을 가리키는 정보를 담고 있다. 기본적으로는 기준일시로부터 몇초가 지났는지를 담아서 타임라인 상의 특정한 지점을 가리키게 된다.
Foundation에서 NSDate는 특정한 시점을 가리키는 포인터에 지나지 않는다. 다른 언어들의 date/datetime 객체와 달리 NSDate 클래스 자체로부터 이 날이 무슨 요일인지 등의 정보는 구할 수 없다. 그 이유는 Foundation은 특정 국가나 문화권에 종속되는 규격이 아니기 때문에 어떤 로케일을 적용하느냐에 따라서 한달의 길이라든가 그런 것들이 다를 수 있기 때문이다. 더 보기 »날짜와 시간을 다루기(Swift)

tableview 셀 생성

테이블 뷰의 데이터소스 프로토콜에는 -tableView:cellForRowAtIndexPath: 라는 메소드가 있다. 이 메소드는 테이블 뷰 상의 특정 위치에 들어갈 cell 객체를 알려주는 메소드로 프로그래머가 작성해주어야 하는 부분이다. 일반적으로는 이렇게 작성했다.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    const NSString *reuseID = @"cell";
    UITableViewCell *cell = [tableView dequeReusableCellWithIdentifier:reuseID];
    if (cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseID];
    }
    ...
    return cell;
}

더 보기 »tableview 셀 생성

OSX Quicklook 플러그인 모음

https://github.com/sindresorhus/quick-look-plugins brew cask를 사용해서 설치한다. brwe cask를 설치하는 방법은… $ brew update; brew install caskroom/cask/brew-cask 그리고 이를 사용해서 각 플러그인을 설치하면 된다. 소스코드 컬러링을 해주는 qlcolorcode의 경우 $ brew cask install qlcolorcode 와 같이 설치한다. 참고로 훑어보기 상에서 문자 선택 및 복사가 가능하게 하려면 터미널에서 다음과 같이 입력한다. $ defaults write com.apple.finder QLEnableTextSelection -bool TRUE; killall Finder