콘텐츠로 건너뛰기
Home » Swift » 페이지 12

Swift

Swift / Cocoa / Foundation / Programming Language / UIKit / AppKit / Swift Standard Library / Swift 문법과 기능 / 공부하면서 알게된 내용들을 정리 / 어느 프로그래밍 언어 덕후의 연습장

Swift에서 SQLite3 사용하기

SQLite3는 C/C++API를 제공하고 있으며, 사용하기도 그리 어렵지 않다. Swift에서 SQLite3를 사용하기 위한 가장 간단한 방법은 Obejctive-C로 DB를 액세스하는 함수나 클래스를 작성하고, Xcode 프로젝트에서 이 클래스를 추가해 Swift에서 사용하는 방법이다. 특히 코코아 클래스들과 Swift 타입들 간에는 바로 브릿징되면서 자동으로 변환되는 것들이 있기 때문에 사용하기에 편리한 점은 있지만, Objective-C에 익숙하지 않거나, 혹은 그냥 아무 이유없이 C API와의 연동을 해보고 싶은 경우가 있을 수 있기에 방법을 소개한다. SQLite3의 C API와 연동하는 방법에 대해서는 별도의 포스팅으로 내용을 분리하였다. 이 글에서는 C API를 직접 사용하면서… 더 보기 »Swift에서 SQLite3 사용하기

Swift에서 포인터를 함수에 전달하는 법

기본적으로 Swift는 C(그리고 Objective-C)와 호환이 가능하다. 이를 위해 C의 각 데이터 타입에 대응할 수 있는 Swift 타입들을 정의해 두고 있다. 따라서 C로 작성된 라이브러리를 사용할 수 있고, 이 때 해당 라이브러리의 함수들은 적절하게 Swift 버전에 맞는 시그니처로 변환된다. 예를 들어 문자열의 길이를 구하는 C함수인 strlen 함수를 Swift에서 호출하고 싶은 상황을 가정해보자. strlen 함수의 원형과 반입된 버전의 함수는 각각 아래와 같은 형태로 만들어질 것이다. 자 그러면 Swift 문자열의 길이를 저 함수를 사용해서 구하고 싶은 상황이라고 하자. 문자열을 어떻게 UnsafePointer<UInt> 로 변환할… 더 보기 »Swift에서 포인터를 함수에 전달하는 법

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

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

(Swift) 올해 크리스마스는 무슨 요일인가?

NSDate 관련 포스팅에서 주구장창 써먹었던 소재. 코드는 아래에… This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters Show hidden characters /* 결과보기 : http://swiftstub.com/345157923 */ enum Weekday: Int, CustomStringConvertible { case Sun = 1 case Mon, Tue, Wed, Thu, Fri, Sat var description: String { switch self { case .Sun: return "Sunday" case… 더 보기 »(Swift) 올해 크리스마스는 무슨 요일인가?

Form submit via POST on Swift (NSURLSession)

POST 폼전송
NSURLSession을 통해서 POST로 폼 내용을 전송하는 예제를 작성해보겠다. 사실 이 예제는 꽤 예전에 Objective-C를 이용해서 작성해 본 바 있는 내용이다.
먼저 POST 폼 전송에 대해서 잠깐 살펴보면, 폼의 각 필드명과 필드값이 GET 방식과 비슷한 형태로 연결되고 URL인코딩을 거쳐 바이너리스트림 데이터로 생성된다. 이걸 submit 하게 되면 브라우저는 웹서버의 해당 주소에 HTTP 요청을 보내게 되는데,더 보기 »Form submit via POST on Swift (NSURLSession)

Swift의 조건절 패턴 매칭 총정리

C 언어의 if 문은 조건이 되는 표현식을 평가하여 0이면 거짓, 0이 아니면 참으로 판단한다. 많은 언어들이 C언어와 같은 방식으로 작동하는 분기문을 지원하고, 따라서 많은 프로그래머들이 여기에 익숙하기 때문에, Swift의 복잡한(?) if 문법이 당혹스러울 수 있다. 이번 글에서는 Swift의 복잡한 조건절을 어떻게 사용하는지 살펴보도록 하겠다. Swift는 조건값이 아닌 조건에 대한 패턴매칭을 기반으로 작동한다. 즉 if 다음에는 “조건 리스트”가 오게 된다. 그리고 이 조건 리스트는 다음 중 하나의 패턴이 된다. 옵셔널 바인딩 우선 가장 많이 등장하는 패턴 중 하나인 옵셔널 바인딩 먼저… 더 보기 »Swift의 조건절 패턴 매칭 총정리

난수생성을 위한 조금 더 나은 선택 – arc4random

전통적인 C 함수로 srandom, rand를 이용해서 난수를 생성하는 방법이 있는데, 보다 진보된(?)형태의 함수로 arc4random 함수가 있다. 이 역시 표준 C 라이브러리(libc)에 탑재되어 있다. (GCC 버전 요구사양은 잘 모르겠다.)

u_int32_t arc4random(void);

이 함수는 32비트 범위값 내에서 정수의 형태로 난수를 생성하며, rand(), randome() 함수에 비해 두 배의 범위를 가진다. 게다가 seed 값을 미리 정의해줄 필요도 없다.

더 보기 »난수생성을 위한 조금 더 나은 선택 – arc4random

defer 문 이해하기

Defer in Swift 2.0

Swift 2.0 에서 새롭게 등장한 defer 구문을 살펴보자. defer문은 다음 코드를 현재 스코프를 벗어날 때 실행한다는 예약이다. 무슨 말인고 하니,

<br />func doit() {
    defer{ print("4")}
    print("2")
    print("3")
}
print("1")
doit()
print("5")

위 코드의 실행 결과는 순서대로 1 -> 2 -> 3 -> 4 -> 5이다. defer는 이후에 받는 블럭을 당장 실행하지 않고 현재 블럭 범위가 종료될 때 실행한다. 이는 단순히 실행의 우선순위를 변경하는 것외에 매우 요긴하게 쓰일 수 있다. 더 보기 »defer 문 이해하기

Contacts 프레임워크

Contacts 프레임워크를 이용한 주소록 액세스

iOS8 까지는 AddressBook 프레임워크를 이용해서 시스템의 주소록 데이터베이스에 액세스할 수 있었는데, iOS9에서는 이 프레임워크 자체가 deprecated 되었다. (헐…) 대신에 연락처를 액세스하는 별도의 프레임워크인 Contacts가 신설되었다. 더 보기 »Contacts 프레임워크